กระทู้เก่าบอร์ด อ.Yeadram
1,644 2
URL.หัวข้อ /
URL
มีช่องว่างในที่ตั้งพาธไฟล์แล้วรูปไม่แสดง
คือผม ต้องการเปิด รูปภาพ ด้วยโปรแกรมนึง จึงใช้คำสั่งนี้
ให้เมื่อเราคลิกก็ให้เปิดโปรแกรม FastStone ขึ้นมาแล้วเปิดไฟล์รูปภาพตามที่อยู่ของมัน
ทีนี้มันเกิดปัญหาตรงที่ว่า ถ้าที่อยู่ของไฟล์ภาพ ตั้งแต่ต้นทางมาเลย มีช่องว่างปนอยู่ด้วย มันจะเปิดตัวโปรแกรมขึ้นมาอย่างเดียว แต่รูปภาพ ตามที่อยู่ไม่แสดง
แต่ถ้า ที่ตั้งภาพ มันไม่มีช่องว่างในนั้น มันก็จะสามารถเปิดได้ตามปกติ
ตัวอย่าง D:\photo\love\mydog\0001.jpg แบบนี้เปิดได้ขึ้นรูปมาปกติ
แต่ถ้าเป็น D:\photo\love\my dog\0001.jpg แบบนี้มันจะเปิดมาแต่โปรแกรมแต่ไม่แสดงรูป
มีวิธีแก้ยังไงบ้างครับ
นี่โค้ดครับ
Private Sub toto1_Click()
On Error GoTo Err_toto1_Click
Dim stAppName As String
Dim path As String
Dim fName As String
path = CurrentProject.path
fName = path & "\" & [to1]
fs = "C:\Program Files\FastStone Image Viewer\FSViewer.exe "
stAppName = fs & fName
Call Shell(stAppName, 1)
Exit_toto1_Click:
Exit Sub
Err_toto1_Click:
MsgBox Err.Description
Resume Exit_toto1_Click
End Sub
ให้เมื่อเราคลิกก็ให้เปิดโปรแกรม FastStone ขึ้นมาแล้วเปิดไฟล์รูปภาพตามที่อยู่ของมัน
ทีนี้มันเกิดปัญหาตรงที่ว่า ถ้าที่อยู่ของไฟล์ภาพ ตั้งแต่ต้นทางมาเลย มีช่องว่างปนอยู่ด้วย มันจะเปิดตัวโปรแกรมขึ้นมาอย่างเดียว แต่รูปภาพ ตามที่อยู่ไม่แสดง
แต่ถ้า ที่ตั้งภาพ มันไม่มีช่องว่างในนั้น มันก็จะสามารถเปิดได้ตามปกติ
ตัวอย่าง D:\photo\love\mydog\0001.jpg แบบนี้เปิดได้ขึ้นรูปมาปกติ
แต่ถ้าเป็น D:\photo\love\my dog\0001.jpg แบบนี้มันจะเปิดมาแต่โปรแกรมแต่ไม่แสดงรูป
มีวิธีแก้ยังไงบ้างครับ
นี่โค้ดครับ
Private Sub toto1_Click()
On Error GoTo Err_toto1_Click
Dim stAppName As String
Dim path As String
Dim fName As String
path = CurrentProject.path
fName = path & "\" & [to1]
fs = "C:\Program Files\FastStone Image Viewer\FSViewer.exe "
stAppName = fs & fName
Call Shell(stAppName, 1)
Exit_toto1_Click:
Exit Sub
Err_toto1_Click:
MsgBox Err.Description
Resume Exit_toto1_Click
End Sub
2 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R12522
จากข้อคิดเห็นของอาจารย์ ผมกลับไปแก้ ชื่อโฟลเดอร์ ให้เป็นสากล แล้วครับ
โค้ดก็เลยใช้งานได้แล้ว คราวหน้าคราวหลัง คงต้องพยายาม ให้เป็นกลางที่สุดละครับ
ขอบคุณ คำแนะนำของอาจารย์ด้วยครับ
โค้ดก็เลยใช้งานได้แล้ว คราวหน้าคราวหลัง คงต้องพยายาม ให้เป็นกลางที่สุดละครับ
ขอบคุณ คำแนะนำของอาจารย์ด้วยครับ
Time: 1.1440s
ต้องดูในฟังก์ชั่น Shell ของคุณด้วยว่า เขียนไว้อย่างไรบ้าง
เอาเป็นว่า ผมยกตัวอย่างก็แล้วกันครับ
เช่นผมเขียนใน dos
copy c:\data\image1.jpg "d:\data jpg\image1.jpg"
สายอักขระมีสามส่วนครับ 1 คือคำสั่ง ใช้ copy
2 คือชื่อและแหล่งต้นทาง ผมไม่คร่อมด้วยอัญญประกาศเพราะมันไม่มีช่องว่างในสายอักขระนั้น หรือก็คือมันไม่มีเครื่องหมายสัญลักษณ์ใดๆ ที่ผิดกฎการตั้งชื่อ
3 ส่วนที่สามคือชื่อและแหล่งปลายทางที่จะเอาไปวางไว้ ผมใส่เครื่องหมายเพราะว่าส่วนนี้มีสัญลักษณ์ที่ผิดกฎการตั้งชื่อปลอมปนอยู่ด้วย นั่นคือช่องว่างครับ
ในคำสั่งเดียวกันถ้าผมนำมาเขียนใน VB ผมก็ต้องเขียนเป็น
shell "copy c:\data\image1.jpg ""d:\data jpg\image1.jpg""
เห็นไหมครับว่าผมต้องเพิ่มอัญประกาศมาอีก 1 คู่
เพราะฉะนั้นลองกลับไปดู ไปประยุกต์ในโค้ดของคุณดูครับ ดูว่าจะพอแก้ตรงจุดไหนได้บ้าง
** ข้อคิดเห็น การเขียนโปรแกรมในทุกวันนี้ยังปวดหัวกับการอ้างอิงชื่ออยู่เป็นประจำครับ การตั้งชื่อด้วยภาษาไทย การตั้งชื่อให้มีช่องว่าง การตั้งชื่อไม่ถูกต้องตามกฎการตั้งชื่อ ไม่ว่าจะเป็นชื่อไฟล์ ชื่อโฟลเดอร์ ชื่อตาราง ชื่อฟิลด์ หรือชื่ออะไรๆ ก็เหอะครับ มันจะก่อปัญหาไปอีกนานครับ ตราบใดที่ระบบคอมพิวเตอร์มันยังเป็นของสากลครับ เราก็ต้องตามหลักสากลครับ คงแก้ไขอะไรไม่ได้ ก็ต้องตามสากลเขาไปล่ะครับ
^ : ; \ / @ # !