Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
7 replies to this topic

#1 amateurday

amateurday

    biết lệnh break

  • Members
  • PipPipPipPip
  • 228 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 23 May 2012 - 06:27 PM

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

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 23 May 2012 - 06:35 PM

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.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3 amateurday

amateurday

    biết lệnh break

  • Members
  • PipPipPipPip
  • 228 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 23 May 2012 - 06:39 PM

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ỉ???
  • 0

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 23 May 2012 - 07:48 PM

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.
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#5 amateurday

amateurday

    biết lệnh break

  • Members
  • PipPipPipPip
  • 228 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 23 May 2012 - 10:12 PM

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é???
  • 0

#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5454 Bài viết
Điểm đánh giá: 2626 (tuyệt vời)

Đã gửi 23 May 2012 - 10:22 PM

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ì?
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#7 amateurday

amateurday

    biết lệnh break

  • Members
  • PipPipPipPip
  • 228 Bài viết
Điểm đánh giá: 4 (bình thường)

Đã gửi 23 May 2012 - 10:54 PM

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
  • 0

#8 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 24 May 2012 - 09:15 AM

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
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD