BMS-HOSxP Community
HOSxP => การเขียน SQL Script => ข้อความที่เริ่มโดย: Svl2Nuk3 ที่ มกราคม 28, 2011, 13:05:25 PM
-
เอามาจดไว้กันลืมครับ ว่าแต่ละฟังก์ชันใช้ทำอะไรบ้าง เพราะเป็นฟังก์ชันที่ไม่ค่อยได้ใช้ ;D
Copy(S, Index, Count); => ใช้ Copy บางส่วนของ String
Parameter
- S [String] : String ต้นแบบ
- Index [Integer] : ตำแหน่งของตัวอักษรที่จะเริ่ม Copy
- Count [Integer] : จำนวนตัวอักษรที่ต้องการ Copy
Return [String] : String ที่ Copy
ตัวอย่าง
Copy('Imnuke', 3, 4);
เริ่มที่ตัวอักษรที่ 3 คือตัว n และมีการ copy 4 ตัว จะได้ค่า nuke
=================================================================
CompareText(S1, S2); => ใช้เปรียบเทียบ String สองค่า
Parameter
- S1 [String] : String ตัวที่ 1
- S2 [String] : String ตัวที่ 2
Return [Integer] : 0 เมื่อ String ทั้ง 2 ตัวมีค่าเท่ากัน และเป็นค่าอื่น ๆ เมื่อตัวเลขไม่เท่ากัน
ตัวอย่าง
CompareText('Imnuke', 'CpeIX'); Return => 6
CompareText('Imnuke', 'Imnuke'); Return => 0
=================================================================
ExtractString(s, ps, delimeter); ใช้แยกข้อความออกจากกันคล้าย ๆ ฟังก์ชัน split
Parameter
- s [String] : String ที่ต้องการแยก
- ps [Integer] : Index ของ String ที่แยกแล้ว
- delimeter [String] : String ที่จะใช้เป็นตัวแยก
Reutrn [String] : String ที่แยกออกจากกันเรียบร้อยแล้ว
ตัวอย่าง
ExtractString('Imnuke CpeIX', 2, ' ');
เป็นการแยกข้อความออกจากกัน โดยใช้ช่องว่างเป็นตัวแยก
เมื่อแยกแล้วจะได้ String สองชุดคือ Imnuke และ CpeIX
เมื่อเรากำหนด Parameter ps เป็น 2 จะได้ค่า String ตัวที่ 2 ก็คือ CpeIX นั่นเอง
=================================================================
UpperCase(S); ใช้เปลี่ยนตัวอักษรให้เป็นตัวใหญ่ทั้งหมด
Parameter
- S [String] : String ที่ต้องการเปลี่ยนเป็นตัวพิมพ์ใหญ่ (ไม่มีผลกับภาษาไทย)
Return [String] : String ที่มีการเปลี่ยนเป็นตัวพิมพ์ใหญ่แล้ว
ตัวอย่าง
UpperCase('Imnuke'); Return => IMNUKE
=================================================================
LowerCase(S); ใช้เปลี่ยนตัวอักษรตัวแรกให้เป็นตัวเล็กทั้งหมด
Parameter
- S [String] : String ที่ต้องการเปลี่ยนเป็นตัวพิมพ์เล็ก (ไม่มีผลกับภาษาไทย)
Return [String] : String ที่มีการเปลี่ยนเป็นตัวพิมพ์เล็กแล้ว
ตัวอย่าง
UpperCase('IMNUKE'); Return => imnuke
=================================================================
Pos(Substr, S); ใช้หาตำแหน่งของตัวอักษร
Parameter
- S [String] : String ต้นแบบ
- Substr [String] : String ที่ต้องการหาตำแหน่ง
Return [Integer] : ตำแหน่งของ String ที่ต้องการหา
=================================================================
Trim(S); ใช้ตัดช่องว่างด้านหน้าและด้านหลังของ Sting
TrimLeft(S); ใช้ตัดช่องว่างด้านหน้าของ String
TrimRight(S); ใช้ตัดช่องว่างด้านหลังของ String
ตัวอย่าง
'=>'+ Trim(' Imnuke ')+'<='; จะได้ =>Imnuke<=
'=>'+ TrimLeft(' Imnuke ')+'<='; จะได้ =>Imnuke <=
'=>'+ TrimRight(' Imnuke ')+'<='; จะได้ => Imnuke<=
-
;D ;D แบบนี้แหล่ะครับที่อยากได้ เพราะการลองผิดลองถูก มันใช้เวลานานครับ
-
เอาโจทย์ไปลองทำเล่น ๆ สัก 2 ข้อนะครับ ;D ;D
ใครว่าง ๆ ก็ลองเล่นดูนะครับ ;D
1. จงเขียน Sourcecode เพื่อหาชื่อไฟล์ที่ถูก Backup (ปกติจะกเก็บ path ไว้ ให้เขียนโค้ดดึงชื่อไฟล์ออกมา) ฟิล์ backup_filename ในตาราง system_backup_history
2. จงเขียน Sourcecode เพื่อหา User ที่เป็นคน Backup ข้อมูล (ปกติจะเก็บชื่อเครื่องและuser ให้เขียนโค้ดดึง user ออกมา) ฟิล์ backup_computer ในตาราง system_backup_history
ใครทำได้ รับไปเลย บ้านพร้อมหนี้สิน แถวพรหมพิราม ;D
-
... เยี่ยมเลยครับ นุ๊ก .... :D ...
... ไม่กล้าตอบโจทย์ กลัวได้ บ้านพร้อมหนี้สิน ครับ ...5555 ...
ทุกวันนี้ก็จะแย่อยู่แล้ว ... 5555555 .... ;D ;D ;D ....
-
... เยี่ยมเลยครับ นุ๊ก .... :D ...
... ไม่กล้าตอบโจทย์ กลัวได้ บ้านพร้อมหนี้สิน ครับ ...5555 ...
ทุกวันนี้ก็จะแย่อยู่แล้ว ... 5555555 .... ;D ;D ;D ....
ตอบได้เลยครับพี่ เดี๋ยวบ้านพร้อมหนี้สินผมเก็บเอง 555+
===============================================
จะเลิกงานแล้วเฉลยข้อ 2 ก่อนละกันนะครับ เหลือข้อแรกไว้ให้ทำ ;D
สมมุติว่าผมมีตัวแปร String ชื่อ comname สามารถดึง user ที่ backup ข้อมูลโดยดึงตัวอักษรที่อยู่ระหว่าง [ ] ก็จะได้ ชื่อ user แล้วครับ ( ถ้าไม่มีใครตัังชื่อคอม หรือ Username มีตัวอักษร [] )
comname:= 'PLAN_COM4 [svrnuke]';
Value := copy( comname,Pos('[',comname) +1 , Pos(']',comname) - Pos('[',comname) - 1 );
-
ขอบคุณครับ
-
;D ;D ;D รับไป 1 Thank
-
เฉลยข้อ 1 ครับ เป็นโจทย์เอาไว้ฝึกใช้ฟังก์ชันเฉย ๆ นะครับ อาจจะมีวิธีที่ง่ายก่านี้ ;D
สรุปว่าบ้านพร้อมหนี้สิน ไม่มีใครได้รับไป ;D
procedure Variable2OnCalc(var Value: Variant);
var path,filename:String;
path_length,index,count:Integer;
begin
path := DBPipeline['backup_filename'];
path_length := Length(path);
count:=0;
for index := 1 to path_length do
begin
if CompareText('\', Copy(path, index, 1) ) = 0 then
begin
count := count+1;
end;
end;
Value := ExtractString(path, count+1, '\');
end;
-
บรรทัด
path_length := Length(path);
path := DBPipeline['backup_filename'];
ต้องสลับไหมครับ ยังไม่ได้ลอง compile แต่น่าจะรับค่าก่อนหาขนาด
ถ้าไม่ต้องการใช้ string function
ใน SysUtils unit มี Function ExtractFileName อยู่ (ใช้ใน Report Designer ได้?)
-
บรรทัด
path_length := Length(path);
path := DBPipeline['backup_filename'];
ต้องสลับไหมครับ ยังไม่ได้ลอง compile แต่น่าจะรับค่าก่อนหาขนาด
ถ้าไม่ต้องการใช้ string function
ใน SysUtils unit มี Function ExtractFileName อยู่ (ใช้ใน Report Designer ได้?)
ใช่แล้วครับ ต้องสลับกัน ;D ;D
ลองใช้ ExtractFileName ใน Variable มันขึ้น Undecalared identifer : 'ExtractFileName'.
น่าจะใช้ได้ตอนเขียน Script ใช่หรือเปล่าครับ
-
ทำไม ตาลาย ไปหมด นี่
จะเก็บเอาไว้ใช้ ง่ะ อิอิ
-
ExtractString(s, ps, delimeter); ใช้แยกข้อความออกจากกันคล้าย ๆ ฟังก์ชัน split
Parameter
- s [String] : String ที่ต้องการแยก
- ps [Integer] : Index ของ String ที่แยกแล้ว
- delimeter [String] : String ที่จะใช้เป็นตัวแยก
Reutrn [String] : String ที่แยกออกจากกันเรียบร้อยแล้ว
ตัวอย่าง
ExtractString('Imnuke CpeIX', 2, ' ');
เป็นการแยกข้อความออกจากกัน โดยใช้ช่องว่างเป็นตัวแยก
เมื่อแยกแล้วจะได้ String สองชุดคือ Imnuke และ CpeIX
เมื่อเรากำหนด Parameter ps เป็น 2 จะได้ค่า String ตัวที่ 2 ก็คือ CpeIX นั่นเอง
ExtractString มีที่มาจากกระทุ้นี้ครับ http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=15259.0