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

[Yêu cầu] code đổi dấu "\\" thành "\" trong path file

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

Nhờ các bác chỉ em cái code này nhé. Thanks!!!

Tại sao phải đổi thế bạn? \" tương đương " => "\\" tương đương "\" rồ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 đổi để lấy đường dẫn copy file ấy mà, file nằm trong nhiều thư mục khác nhau, cứ mỗi lần mò không biết bao lâu cho xong. Có làm được không bác nhỉ???

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 đổi để lấy đường dẫn copy file ấy mà, file nằm trong nhiều thư mục khác nhau, cứ mỗi lần mò không biết bao lâu cho xong. Có làm được không bác nhỉ???

Đường dẫn mà bạn nhìn thấy trong các thư mục nó chỉ có 1 dấu "\" nhưng khi viết thành chuỗi thì nó trở thành "\\".

Vì vậy, nếu bạn chuyển từ "\\" sang "\" thì dấu "\" sẽ "biến mất.

Ví dụ: (setq a "C:\b\d") => "C:bd" => làm sao để bạn lấy path.

Bạn cần phải hiểu ký tự " là 1 ký tự đặc biệt.

  • 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

Ok bác, lisp nhiều khi không vừa ý mình mấy nhỉ. May mà còn dấu "/", hóa ra tương tự, thanks bác!!!

 

p/s: cho em hỏi có code nào copy luôn path trên sau khi thực hiện lệnh ko bác, không copy dấu nháy " nhé???

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

Ok bác, lisp nhiều khi không vừa ý mình mấy nhỉ. May mà còn dấu "/", hóa ra tương tự, thanks bác!!!

p/s: cho em hỏi có code nào copy luôn path trên sau khi thực hiện lệnh ko bác, không copy dấu nháy " nhé???

Tôi không hiểu ý bạn. Copy path trên thì path này lấy từ đâu? Sau khi thực hiện lệnh nào?

Bạn có thể diễn tả rõ hơn, có ví dụ càng tốt, và mục đích là để làm gì?

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

Nhờ code trên cadviet, nên nó như thế này:

(defun c:pp (/ text)
(SetClipBoardText (vl-string-translate "\\" "/" (getvar 'dwgprefix)))
)
(defun SetClipBoardText (text / htmlfile result ) ; By XShrimp
 (if (= 'STR (type text))
(progn
 	(setq htmlfile (vlax-create-object "htmlfile")
result (vlax-invoke (vlax-get (vlax-get htmlfile 'ParentWindow ) 'ClipBoardData) 'SetData "Text" text ) )
 	(vlax-release-object htmlfile)
 	text
 	))
)

 

P/S: nói chung nó cũng không giúp ích là mấy, nhưng em đề phòng sau này dùng nên tìm. Chẳng biết sau này có dùng không nữa. Mục đích là copy đường dẫn của file cad hiện đang mở đưa vào clipboard. HIHI

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

bạn để nguyên (không thay thế \\ bằng /) mà đưa thẳng vào clipboad thì nó vẫn ra đường dẫn chuẩn cho bạn cơ mà

thử paste ra word hay notepad mà xem. lằng nhằng chi vậy bạn?

 

Trong ngôn ngữ lisp. Một số ký tự đặc biệt không được thể hiện bằng cách thông thường vì các ký tự đó được dùng vào mục đích khác. hoặc không có phím nào thể hiện được ký tự đó

Ví dụ: ký tự nháy kép " được dùng cho mục đích đánh dấu điểm đầu và cuối 1 chuỗi. Các ký tự tab, Xuống dòng, các tổ hợp nhận biết các bảng mã...

Vì vậy lisp fải sử dụng 1 tổ hợp ký tự thay thế để thể hiện các ký tự trên bằng cách đặt trước các ký tứ đó 1 dấu \

Cụ thể: \" = " ; \n = xuống dòng (chuỗi đơn line) ; \P = xuống dòng (chuỗi multi Line) ; \t = tab ...

Khi đó do bị lấy fục vụ vào mục đích trên nên bản thân ký tự \ lại không thể dùng để thể hiện chính nó nữa. và nó vô tình cũng trở thành 1 ký tự đặc biệt với nhóm trên. vì vậy để thể hiện nó thì cũng theo nguyên tắc trên ta có \\ = \

Vì thế khi lisp đọc 1 chuỗi C:\program file\autodesk thì nó thể hiện ra là C:\\program file\\autodesk . thực tế nó vẫn là C:\program file\autodesk

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  

×