Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
NDBNGO

Nhờ hướng dẫn sử lý file số liệu(Text) bằng LISP

Các bài được khuyến nghị

Những gì bác hỏi ở đây thực ra toàn là những kiến thức rất cơ bản của Lisp. Bác hãy chịu khó nghiên cứu thêm một chút, chắc chẳng có ai chỉnh sửa chi li theo những yêu cầu thất thường của bác đâu.

Xem qua tâm sự của bác tôi thấy bác cũng thuộc diện có máu mặt trong làng lập trình, vậy mà một chút tư duy như thế bác không làm được sao?

Thân.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình thế hệ quá cũ nên,trước chỉ sử dụng pascal là chính ,nghĩ viêt đã đủ và dùng,lâu nghĩ không cần nữa.Song hiện tại thế Vlisp,lisp có nhiều tính năng hay nên muốn học.Không phải mình thất thường đâu .

Mình muốn cập nhật thêm các tính năng để học thôi.tiến tới để tự viết cho mình và viết giúp cho mọi người khác như mục tiêu của diễn đàn.

Đây là những bước đầu để mình nghiên cứu nó,vì cũng bỏ lâu rồi .Nghĩ đã hoàn thành sứ mệnh trong giai đoạn mình,nhưng thế hệ trẻ trong ngành mình ít người muốn tư duy quá.Do vậy lại phải gồng mình lên thôi.

Mình sinh 1964 nên học cái mới cũng không đơn giản.Đế tuổi này mà còn phải hỏi từng tý 1 cũng xấu hổ lắm chứ.

Cũng đã mua ,dow các hướng dẫn về Vlisp,líp nhưng chưa tiêu hóa được nó ngay được.

Thân.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Rõ khổ, trâu già lại phải đi cày ruộng sâu :D .

Theo em bác cứ tà tà, bác chỉ cần hiểu được cú pháp của Lisp thì dễ dàng suy luận ra được thôi. Bác đã thạo Pascal rồi thì cũng sẽ dễ, ngày trước em còn chẳng được học Pascal, chỉ được học PQBASIC (hic, tủi thân lắm)

Em nói thất thường là ở chỗ: Dù bác có tự viết ra đi chăng nữa thì chính bác cũng thấy mệt, chẳng lẽ cứ liên tục thay đổi code theo cách tổ chức dữ liệu hay sao. Nguồn dữ liệu là 1 yếu tố cố định, không nên thay đổi thất thường như bác, phần mềm nào cũng thế thôi người ta cũng phải có những cái chuẩn cố định.

Lisp viết rất dễ, trừ Dialog và các hàm nâng cao.

Bác cứ nhấn F1 rồi chịu khó mò 1 chút là sẽ làm được.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Cũng ham muốn để viết cho hỗ trợ anh em ngành trắc địa bản đồ .Anh em vất vả qúa ,các chương trình toàn cóp nhặt,không hợp lý.Nhiều Ts thì viết bằng fotran sang cad bôi bác qua lại đòi bản quyền cao ,crack được thì làm hỏng anh em trắc địa vì đưa anh em tụt lùi với thời cuộc.bây giờ vẫn DOs,dxf,scr,lisp .. e không ổn,lại gây nhầm lẫn. Thì muốn viết phần mềm phải đặt ra mọi tình huống,tùy biến.Làm ra cái mà người sủ dụng muốn chứ không phải người viết muốn đâu.

trong ngành mình dữ liệu đầu vào rất đa dạng,do vậy muốn học đầu tiên là việc xử lý danh sách này ,để tùy biến các dữ liệu theo ý mình.Nghia là việc nhiều file ghép lại ,chuyển hàng ,chuyển côt,ghép dũ liệu vào đầu ,giũa ,cuối,vào bât kỳ chỗ nào...

Ví như ban tmctpc rất nhiều công tìm kiếm,biên dịch ,giới thiệu ,biên tập các phần mềm nước ngoài ,nhưng dân mình chỉ quen ăn cơm nên đua cho bánh mỳ với sup ,lap xương .. .chưa quen không dùng được.Các bài viết của bạn ấy không ai phản hồi và trôi vào vào quên lãng.Không phủ nhận cái tâm của ngừời viết nhưng viết cái anh em không dùng được e cũng khổ công người viết.

Tôi là người chỉ dạo kỹ thuật,tiếp xúc nhiều ,biết cái anh em cần ,biết cái thiếu kém của các phần mềm,vậy không viết được hổ trợ anh em thì cảm thấy như bác sỹ đứng trươc thương binh nặng mà phải bỏ đi.

Mình là nhưng người hướng dẫn phần mềm Topcon đầu tiên ở Bắc Việt nam ,thường xuyên tham gia hội thảo về phần mềm,máy công cụ mới mà còn bị bạn vuvuzela nói không chịu đọc mà,chỉ bấm bụng mà chịu thôi.

Thôi thì già cũng phải cố gắng vậy,cố tham gia diễn đàn 30 năm nũa nên học vẫn có ích chứ.

Xin cảm ơn lần nữa.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Ặc, tự nhiên lại có tên mình

Tôi nghĩ là bác NDBNGO có chí cầu tiến đấy, luôn suy nghĩ làm sao chương trình chạy nhanh nhất, bỏ qua những thao tác thừa mà mình có thể làm thành 1 lệnh được và chất luợng nhất. Cái này đòi hỏi người TƯ VẤN luôn động não và có 2 kỹ năng cần thiết : Lập trình và khả năng đưa ra tình huống để bằng mọi cách đưa những thao tác thực hiện về càng ít lệnh càng tốt.

Vì thế nghề TƯ VẤN ăn nhau là TỐC ĐỘ và ĐỘ CHÍNH XÁC CAO

Các công ty và cá nhân đều có bảo bối của riêng mình để tồn tại

Trên diễn đàn thì anh em không có đủ thời gian để thực hiện hoàn chỉnh các yêu cầu của bác đâu (vì phần mềm hòan chỉnh của các GS, TS đòi những 5 chai cơ mà), mà chỉ làm động tác "TIÊN NHÂN CHỈ LỘ" để anh em có thể triển khai ý tưởng của mình tiếp theo.

Còn về vấn đề ghép file của bác thì theo tôi nghĩ cái này không cần thiết vì Autolisp có khả năng đọc các file trong 1 thư mục

Bác có thể dùng hàm này để list ra toàn bộ file txt để thực hiện lệnh command ... nhé :

 

(vl-directory-files "d:/FileTOPCON" "*.txt")

 

Bon...on...n

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Vụ thứ 2 của bác em đã giải quyết xong tuy nhiên file nguồn của bác có 1 chỗ trùng 2 dòng giống nhau nhưng file đích của bác lại chỉ cho ra 1 dòng đồng thời dòng tiếp theo không dúng quy luật (Vị trí 203) Bác xem lại nhé.

Còn đây là đoạn code xử lý:

(defun c:ChuyenDoi()
 (setq File (getfiled "Chon file" "" "" 4)
File1 (open File "r")
File2 (open (strcat (GetFolder File) "FILE2.txt")  "a"))  
 (while (setq Line1 (read-line File1))
(setq LLine1 (split Line1 "	 "))
(if (= (nth 0 LLine1) "STN")
  (progn
(setq LL (split (nth 1 LLine1) ",")
	  Str (strcat "TR " (nth 0 LL) " " (nth 1 LL)))
(write-line Str File2)
  )
)
(if (= (nth 0 LLine1) "BS")
  (progn
(setq LL (split (nth 1 LLine1) ","))
(write-line (strcat "DH " (nth 0 LL)) File2)
  )
)
(if (= (nth 0 LLine1) "SS")
  (setq LL (split (nth 1 LLine1) ","))
)
(if (= (nth 0 LLine1) "HD")
  (progn
(setq LL1 (split (nth 1 LLine1) ",")
	  LL1 (Joint LL1 "	"))
(write-line (strcat (nth 0 LL) "\t" LL1 "	" (nth 1 LL)) File2)
  )
)
 )
 (close file1)
 (close file2)
)
(defun Split(StrOrg Delimiter / ListAnswer)
 (setq ListAnswer nil)	
 (while (not (null (setq DeliPoint (vl-string-search Delimiter StrOrg))))
(setq ListAnswer (append ListAnswer (list (substr StrOrg 1 DeliPoint))))
(setq StrOrg (substr StrOrg (+ (strlen Delimiter) 1 DeliPoint)))	
 )
 (setq ListAnswer (append ListAnswer (list StrOrg)))
)
(defun Joint (LstOrg Delimiter / StrAnswer I)
 (setq I 0)
 (setq StrAnswer "")
 (while (< I (length LstOrg))
(if (= StrAnswer "")
  (setq StrAnswer (nth I LstOrg))	  
  (setq StrAnswer (strcat StrAnswer Delimiter (nth I LstOrg)))
)
(setq I (1+ I))
 )
 (setq StrAnswer StrAnswer)
)
(defun GetFolder(Str)  
 (setq I (strlen Str))
 (while (> I 0)
(if (= (substr Str I 1) "\\")
  (setq Folder (substr Str 1 I)
	I 0)
)
(setq I (1- I))
 )
 (setq Folder Folder )
)

Lưu ý: File đích sẽ được tạo ra trong cùng thư mục của file nguồn.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Cảm ơn em .Anh sẽ phân tích để có thể tự viêt lấy trong thời gian ngắn nhất.

Đoạn nào lỗi em bỏ nó đi được mà ,các hàng đó giống nhau thôi

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Em chay thử chưa .anh chạy chỉ ra tên file file2.txt trong file không có gì cả.

Mấy file khác anh chay kêt quả đều thế .Chương trình báo nil ,không có lỗi nhung o có gì cả

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Gay thật.

Do lỗi của diễn đàn nên khi copy và dán nên đoạn này

(setq LLine1 (split Line1 " "))

sẽ thành

(setq LLine1 (split Line1 " "))

Có 5 kỹ tự trống liền nhau trong dấu ngoặc kép và được cắt giảm xuống 1 (lỗi nên không diễn đạt được).

Bác hãy sửa lại giúp em hoặc bấm vào nút Download lisp file

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Em viết bằng dấu cách nhé , riêng côt đầu format là 7 cách (để có thể chèn 7 ký tự ) ,các cột sau thì chỉ cần 1 đấu cach (hoắc tư do cũng được).

Nói chung dùng dấu cách như chương trình 1 là được

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Cảm ơn hoa35ktxd.

Mình đã sửa được theo ý muốn về fomat.Cảm ơn về chương trình,mình đâng cố gắng hiểu nó và học thêm.

Mong được sự giúp đỡ thường xuyên của bạn.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×