หน้าแรก
 การบ้าน
  C/C++ new
  Java new
  Windows Phone
  แจ้งเรื่องที่ต้องการ
 บทความ
  .NET
  Android
  Blackberry
  C++Builder
  Delphi
  Java
  Mobile
  Open Source
  Pocket PC
  Visual Basic
  Web
  Windows Phone
  Others
 แบบเรียนฟรี
  ASP
  ASP.NET Webmatrix
  C++
  eVB
  J2ME
  Java
  PHP
 ซอร์สโค้ด
  Android
  ASP
  C++
  VC++
  CGI-Perl
  Delphi
  Java
  jQuery
  PHP
  Visual Basic
  .NET
 บริการจากเรา
  เปิดท้าย... ขายโค้ด
  Freeware
  อัตราค่าโฆษณา
  รายชื่อลูกค้า
  สถิติผู้เข้าเว็บ
 ดาว์นโหลด
 ค้นหาข้อมูล
 กระดานสนทนา
  .NET
  C/C++
  Delphi
  Java
  Palm/PocketPC
  Visual Basic
  Web
  อื่นๆ
 กระดานงาน
 ลิงค์เว็บ
 เกี่ยวกับผม
 อัตราค่าโฆษณา
Social Network

Facebook  Twitter  YouTube
 New Article
 Webboard
 Freelanceboard
Freeware
โปรแกรมเบอร์ดี (BerDee)
โปรแกรมเบอร์ดี (Android)
เกมส์เป่ายิ้งฉุบ
เกมส์เป่ายิ้งฉุบ(Android)
WebcamMonitor
WebcamMonitor(Windows)
scSendMail
scSendMail(Windows)
MSN Caption
MSN Caption(Windows)
  Freelance comment
  ติดต่อสอบถามมาได้ตลอดนะ...
2015-07-29 13:35:58
  ถ้าผมต้องการเว็บที่พัฒน...
2015-01-18 15:33:54
  ถ้าผมต้องการเว็บที่พัฒน...
2015-01-18 15:32:51
  ติดต่อสอบถามเข้ามาได้นะ...
2014-01-06 12:47:38
  ถ้ายังหาคนสอนไม่ได้ ก็ลอ...
2013-07-06 01:04:37
  สนใจส่งขอบเขตมาคุยราคาก...
2013-03-24 18:54:20
  ถ้ายังไม่มีคนรับงานติดต...
2012-12-16 19:18:14
  สนใจคะ ติดต่อ 0905076277...
2012-11-12 11:07:46
  รับทำโปรเจ็คนักศึกษาหรื...
2012-10-29 03:10:46
  sukit_te34@hotmail.com...
2012-10-29 03:09:36
  Webboard comment
  มาส่อง...
2024-08-19 15:45:12
  ช่วยเขียนโปรเจค: การควบค...
2024-08-07 09:13:31
  เขียนโปรแกรมภาษาจาวา
1.โ...

2023-09-12 11:40:28
  ต้องลอง debug ดูเองครับ
ไล่...

2023-06-08 18:03:06
  ร้านค้าแห่งหนึ่ง จะต้องน...
2021-09-21 08:47:08
  จงเขียนโปรแกรมดำเนินการ...
2021-05-07 15:06:11
  จงเขียนโปรแกรมสำหรับคำน...
2021-03-09 14:21:45
  ขอดู...
2021-01-04 23:56:45
  ขอโค้ดเพื่อทำการเรียนกา...
2020-12-09 23:02:09
  แล้ว ?...
2020-12-09 10:56:34
  Homework comment
  เขียนโปรแกรมเพื่อรับค่า...
2022-02-24 10:45:17
  จากโค้ดนี้อะครับ พอดีลอง...
2021-03-22 01:22:39
  จากโค้ดนี้อะครับ พอดีลอง...
2021-03-22 01:22:39
  โจทย์การบ้าน c++ เขียนรูปแ...
2020-04-06 11:01:33
  แบบนี้ขอเป็น ภาษา php หน่อย...
2019-09-18 14:36:34
  ผมไม่อยากให้คุณได้คะแนน...
2019-04-27 01:29:07
  อาจารย์เขาบอกแนวข้อสอบม...
2019-04-27 00:44:29
  ขอสอบถามการเขียน c++ ครับ เ...
2018-04-02 12:19:21
  โค้ดตัวอย่างศึกษาให้เข้...
2017-11-26 14:50:05
  คำนวณค่าน้ำโดยรับค่ามิเ...
2017-11-20 23:15:26
  Article comment
  เท่าที่อ่าน error คือพื้นที่...
2022-03-23 13:56:48
  เรียน สอบถามปัญหา กับ อ.คร...
2022-01-24 17:39:49
  ต้องการ ให้เขียน โปรแกรม ...
2019-12-09 11:39:58
  รับเขียน arx จาก vc++ 2017 ล็อคโปร...
2019-09-19 09:48:09
  ทำการ register ไฟล์ที่ชื่อ mswinsck.oc...
2019-09-17 14:05:56
  ใน vb 6 ไม่มี component winsock เลยค่ะ ส...
2019-09-03 10:31:02
  รบกวนขอสอบถามหน่อยนะครั...
2019-03-04 05:31:04
  สามารถนำตัวหนังสือจากภา...
2018-12-25 08:54:32
  มีcode ของ VB ไหมค่ะ ถ้ามีรบกว...
2017-09-28 16:50:02
  น่าจะได้ครับ ไม่เคยลอง
...

2017-07-11 09:59:35
  9Mcode comment

Link Exchange

อัตราค่าโฆษณา
 
What?s new in Delphi 2005 #1 ( for ?in loop statement) (อ่าน 14,753)
บทความโดย Artist / syootakarn@hotmail.com 

- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -

 
 
Freelanceรับพัฒนาโปรแกรม และเว็บ โดย 9'M 

Delphi 2005 มีการเพิ่มความสามารถใหม่ๆ เข้ามามากมายทั้งในตัว IDE เองและในส่วนของโปรแกรมอัตถประโยชน์ (add-in) แต่ละความสามารถนั้นช่วยให้นักพัฒนาๆ โปรแกรมได้สะดวกและรวดเร็วยิ่งขึ้น ผมจะทยอยนำมาเขียนให้ผู้อ่านได้อ่านกันนะครับ
วันนี้เรามาดูคำสั่ง(keyword) ที่ได้เพิ่มเข้ามาใน Delphi 8 ชื่อคำสั่ง for ?in loop ครับเป็นการประยุกต์ใช้คำสงวน for และ in มาใช้งาน แต่ก่อนนั้นการเขียนโปรแกรมใน Delphi ถ้าเราต้องการใช้ for loop เพื่อใช้งานค่าที่เก็บอยู่ใน Array , List หรือ Array Pointer เราจะต้องเพิ่มตัวแปรเข้าไปอย่างน้อยหนึ่งเพื่อใช้เป็นอินเด็กใช้อ้างอิงถึงตำแหน่งที่เราต้องการเข้าถึง ถึงแม้เราจะใช้ Iterator (วัตถุหรือโปรแกรมย่อยที่ใช้เข้าตัวแปรแบบ Array) ก็ตามแต่ใน Iterator นั้นก็ยังจำเป็นต้องมีตัวแปรที่ใช้เป็นอินเด็กอยู่ดี ตัวอย่างข้างล่างเป็นการเข้าถึงตัวแปร Array

var
  i: Integer;
begin
  Memo1.Clear;
  for i:=0 to ListBox1.Items.Count-1 do
    Memo1.Lines.Add(ListBox1.Items[i]);

โปรแกรมด้านบนเป็นโปรแกรมคัดลอกข้อมูลที่เก็บอยู่ใน Listbox1 มาเก็บไว้ใน Memo1 จากโปรแกรมจะเห็นว่าเราต้องเพิ่มตัวแปรเข้ามาในโค๊ดของเราหนึ่งตัว ในที่นี้เราเพิ่มเข้ามาหนึ่งตัว ถ้าหากโปรแกรมมีขนาดใหญ่และซับซ้อนมากกว่านี้และเราจะต้องใช้ตัวแปรมากขึ้นกว่านี้ อาจจะทำให้คุณใช้งานตัวผิดพลาดได้ เนื่องจากเราต้องทราบตำแหน่งเริ่มต้นและสิ้นสุดของตำแหน่งใน Array เช่นตำแหน่งเริ่มอาจจะเริ่มที่ ?0? หรือ ?1? หรือตำแหน่งใดๆ ก็ได้ ทีนี้เรามาดูโปรแกรมข้างล่างกัน

procedure TForm3.Button2Click(Sender: TObject);
var
  S: String;
begin
  Memo1.Clear;
  for S in ListBox1.Items do
    Memo1.Lines.Add(S);
end;

โปรแกรมข้างบนคำสั่ง for S in ListBox1.Items do เป็นการให้ Delphi Compiler ทำการใส่คำสั่งพิเศษเข้าไปในโปรแกรมของเราเพื่อให้เพิ่มค่า Index ให้เราโดยอัตโนมัติโดยให้เริ่มจากตำแหน่งเริ่มต้นจุดถึงตำแหน่งสิ้นสุด(ค่า index จะไม่แสดงให้เราเห็นตอนเขียนโปรแกรม) ในโปรแกรมนี้เราต้องสร้างตัวขึ้นมาใหม่เป็นชนิดเดียวกับตัวแปรที่เราต้องการให้เลื่อนตำแหน่ง index จากโปรแกรมเราสร้างตัวแปรชื่อ S ซึ่งเป็นแบบ String ขึ้นมาใหม่ จากนั้นนำมาใส่ใน for ?in loop เมื่อเรารันโปรแกรมค่า Index ที่ชี้ไปที่ ListBox.Item จะเพิ่มขึ้นทีละหนึ่งโดยอัตโนมัติ (ค่าดังกล่าวได้มาจากการเรียกใช้ฟังก์ชั่น GetEnumerator) และค่าที่เก็บใน S จะเป็นค่าที่ข้อมูลใน Array ตำแหน่ง index การใช้งาน S ใน for ?in loop นั้นต้องจำไว้เสมอว่าเมื่อใช้งานค่าของ S จะเป็นค่าที่อ่านได้อย่างเดียว (read only) เสมอ จากโปรแกรมข้างบนถ้าเราเขียนโปรแกรมโดยไม่ใช้ for-in loop โปรแกรมจะเป็นดังนี้

procedure TForm3.Button4Click(Sender: TObject);

var
  i: Integer;
  
begin
  Memo1.Clear;
  for i:=0 to ListBox1.Items.Count-1 do
    Memo1.Lines.Add(ListBox1.Items[i]);
	
end;

มาดูตัวอย่างต่อไปครับ

procedure TForm3.Button2Click(Sender: TObject);

var
  S: String;
  C: Char;
  Spaces: Integer;

begin
  Spaces := 0;
  Memo1.Clear;
  for S in ListBox1.Items do
  begin
    Memo1.Lines.Add(S);
    for C in S do
      if C = ' ' then Inc(Spaces);
  end;

end;

โปรแกรมข้างบนเป็นการใช้งาน for-in loop ให้เพิ่มค่า index ที่เป็นตำแหน่งตัวอักขระในข้อความครับ มาดูอีกตัวอย่างนะครับ

procedure TForm1.Button1Click(Sender: TObject);

var
  Comp: TComponent;

begin
  ListBox1.Clear;
  for Comp in Self do
    ListBox1.Items.Add(Comp.Name + ': ' + Comp.ClassName);

end;

โปรแกรมข้างบนเป็นการใช้งาน for-in loop เพื่ออ้างอิงถึงตำแหน่ง Comp ใน Self ครับ โดย Comp เป็นตัวแปรวัตถุ TComponent ที่อ้างอึงมาจากตัวแปร self ซึ่งเป็น TForm1 หรือตัวแปรวัตถุ TForm ที่เป็นคลาสฐาน คล้ายตัวแปร this ใน C++ หรือตัวแปร ME ใน Visual Basic นะครับ มาดูอีกตัวอย่างนึงครับ

procedure TForm3.Button3Click(Sender: TObject);

var
  Comp: TComponent;

begin
  ListBox1.Clear;
  for Comp in Self do
  begin
    Comp.Tag := 42;
    if (Comp is TButton) then
      (Comp as TButton).Caption :=
        '<'+(Comp as TButton).Name+'>'; 
    ListBox1.Items.Add(Comp.Name + ': ' + Comp.ClassName);
  end;

end;

โปรแกรมข้างบนต่อยอดจากโปรแกรมก่อนหน้านี้เป็นการตรวจสอบค่าของ Comp ที่อยู่ใน for-in loop ครับ พึงระวังเสมอนะครับว่าค่าของ Comp ที่อยู่ใน for-in loop นั้นเป็นค่าที่อ่านได้อย่างเดียว ไม่สามารถใช้คำสั่ง create() สร้างมันขึ้นมาได้เมื่อใช้งานกับคำสั่ง for-in loop

 

- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -

สอบถาม
  • ห้ามการโฆษณา หากต้องการติดต่อหาลูกค้า ติดต่อโฆษณาโดยตรงได้ที่ webmaster@sourcecode.in.th
  • ห้ามใช้คำหยาบและคำพูดที่ไม่เหมาะสม
  • ขอสงวนสิทธิหากตรวจพบ ข้อความที่ไม่เหมาะสม ข้อความนั้นจะถูกลบทันที
ชื่อ
อีเมล์
รายละเอียด

 
 
คลิปสอนเขียนโปรแกรม
เรียนเขียนโปรแกรมดอทเน็ต
เรียนเขียนโปรแกรมแอนดรอยด์
เรียนเขียนโปรแกรมเบล็คเบอร์รี่
เรียนเขียนโปรแกรมซี ซีพลัสพลัส
เรียนเขียนโปรแกรมจาวา
เรียนการใช้งานลินุกส์
เรียนการเขียนโปรแกรมวินโดว์โฟน
เรียนการเขียนโปรแกรมพีเฮชพี มายเอสคิวเอล
อัตราค่าโฆษณา
 
บทความที่เกี่ยวข้อง

Zoom หน้าจอด้วย Delphi

Dynamic Cast ใน Delphi

เขียนโปรแกรมให้ Run ตอน Startup Windows

สร้าง LED Control

การเขียน ActiveForm(ActiveX Control) เบื้องต้น

โปรแกรม Post ข้อมูล ไปยังไฟล์ ASP

แสดงหมายเลข IP Address ของเครื่องบน NetWork

การแสดงรายชื่อ Email Contact ของ Microsoft Outlook

การหาตำแหน่งของ Caret ใน Memo

การเขียน Service Application เพื่อใช้งานบน Windows NT/2000/XP
Tutorial
eVB Tutorial
ASP.NET Webmatrix Tutorial
J2ME Tutorial
C++  Tutorial
Java  Tutorial
PHP Tutorial
ASP Tutorial
 
แบบสำรวจ

Home - Article - Tutorial - Sourcecode - Dev Handbook - Search - WebBoard - Links - About Us

สงวนลิขสิทธิ์ ห้ามคัดลอก ทำซ้ำ แก้ไข ดัดแปลง ไม่ว่าในรูปแบบใด โดยไม่ได้รับอนุญาตเป็นลายลักษณ์อักษร
เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์จากกระทรวงพาณิชย์: 7100503002000
Copyright 2001 SourceCode.in.th