Posto ne znam sta znas, a u sustini nije komplikovano, onda idemo iz pocetka. Probacu da napravim neku paralelu sa VB, mada ja Visual Basic nemam blage veze, pa ako nesto lupim, nema smejanja
- Kad startujes Delphi, onda ti se na ekranu pojavi u prvom planu glavni obrazac (glavni prozor, main form) tvog programa. To je prozor koji se zove Form1. Slicno kao i u VB-u kada ides na File/New Project pa onda izaberes Standard EXE - pojavi ti se prozor tvog projekta u kome je tvoj glavni prozor Form1.
- U Delphiju ces pored glavnog obrasca imati sa leve strane prozore koji su Object viewer i ispod je Object Inspector koji ti daje podatke o properties datog objekta. U pocetku je to objekat Form1 klase TForm. Slicno u VB-imas, samo sa desne strane Project viewer i ispod njega je prozor sa properties.
- U Delphiju su (obicno) u gornjem delu ekrana alati: label (slovo A kao u VB), button (ovde na njemu pise OK, u VB-u ne pise nista), checkbox, radiobutton, combobox, listbox (u VB-u je malo manja ikona) i svi oni se nalaze pod "jezickom" Standard. U VB se sve ovo nalazi (obicno) sa leve strane pod General.
- Ako pomeris malo prozor Form1, videces ispod njega prozor u kome ti se nalazi kod za Unit1. U ovom unit-u definises sve ono sto se desava u glavnom prozoru i sta se ukljucuje i poziva iz njega i on izgleda otprilike ovako:
[code:1]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end. [/code:1]
- Sada odes opet na Form1, onda izaberes Button i dovuces ga na neko mesto na Form1 - prozoru (kao i u VB-u), onda odes u Object Inspector (to je Properties u VB-u) i tamo mu promenis Caption u recimo, "Listaj"

. Onda opet kao sa dugmetom, uradis sa ListBox-om. Stavis ga negde na Form1 i onda ga razvuces na ostatak da bi bilo sto vise mesta (isto kao i u VB-u sto bi uradio). Negde na Form1 dodaj i Edit (na njemu pise ab kao i na TextBox-u u VB-u). Ove tri prethodne operacije imaju za posledicu to da se u prozoru za editovanje Unit1 nalazi sada:
[code:1]
type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
Edit1: TEdit;
private
{ Private declarations }
public
{ Public declarations }
end; [/code:1]
ovakva deklaracija.
- Znaci, imamo glavni prozor i na njemu jedno dugme, jedan text-box i jedan list-box. Ako nisi nista menjao, onda klasa TForm1 izgleda kao na prethodnom listingu.
- Onda u Object TreeView prozoru kliknes na Button1 objekat. On se pojavljuje u Object Inspectoru. Onda kliknes na "jezicak" Events i onda kliknes na stavku OnClick. Onda na prazno mesto sa desne strane klikni 2 puta i dobices da ce da se pozove procedura Button1Click koja je metoda klase TForm1 (ispod Edit1 : TEdit; u deklaraciji TForm1 ce se pojaviti:
procedure Button1Click( Sender : TObject) . Slicno kao kada u VB-u kliknes 2 puta na dugme Command1 i pojavi ti se editor koda za Private Sub Command1_Click().
- Kad si sve to uradio, onda ces imati iza {$R *.dfm}
procedure TForm1.Button1OnClick ( Sender : TObject) koja ima prazno telo. Onda tu ubacis onaj kod i to ti je to.
Sve to bi na kraju trebalo da izgleda ovako:
[code:1]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var path : string; { staza - od ovoag sve krece }
depth : integer; { dubina rekurzije - mozda zatreba }
brojac : integer; { broji fajlove i upis je u textboxu }
procedure RekurzijaCD_a(p : string; d : integer); forward; { ako stavis iza naredne procedure, onda ti ne treba ovaj red }
procedure TForm1.Button1Click(Sender: TObject);
begin
path:='d:\';
depth:=0;
brojac:=0;
RekurzijaCD_a(path,depth);
end;
procedure RekurzijaCD_a(p : string; d : integer);
var f : TSearchRec;
pa : string;
de : integer;
begin
de:=d; pa:=p; { lokalne promenljive}
if (findfirst(p+'*.*', faAnyFile, f)=0) then
begin
repeat
form1.edit1.Text:=IntToStr(brojac)+' - '+p;
if (f.Attr<>$010) then
begin
Form1.ListBox1.Items.Add(p+f.Name);
brojac:=brojac+1;
Form1.Repaint
end
else if (f.Name<>'.')and(f.Name<>'..') then
RekurzijaCD_a(pa+f.Name+'\',de+1);
until (findnext(f)<>0);
end;
FindClose(f);
end;
end.[/code:1]
Kad zavrsis, pritisni CTRL+F9 za compile i ako je sve OK (a trebalo bi da jeste), onda F9 za run. Ubaci neki CD, startuj i pritisni dugme. Trebalo bi da se u listbox-u pojavi spisak svih fajlova na CD-u sa punom stazom. Mozes da posebno imas stazu dirova, punu stazu fajla, samo ime fajla. Mozes ono path:='d:\' da zamenis sa 'c:\' pa dobijes isto to samo sa hardom.
Program moze da se nelegalno zavrsi ako se dostigne limit listbox-a koji ja ne znam da li postoji i koliki je ako postoji

.
Drugi mnogo opasniji razlog je da ti se zakuca negde nesto ako se pretera sa dubinom rekurzije sto mozda u nekim ekstremnim situacijama ako nekom ide dubina stabla dira vise od nekoliko desetina ili cak stotina sto je suludo, ali ajde.... Zato treba malo pazljivije analizirati koja su ogranicenja i to je sve. Uh, ceo esej

Nadam se da je ovo pomoglo.