hallo,
1. wie kann ich ein verzeichnis auflisten und dazu auch noch die dateien anzeigen? das ganze mit kylix, da ich früher viel mit delphi gemacht habe.
2. wie kann ich diesen absolut blöden splash-screen von borland abschalten, der bei jedem start angezeigt wird?
Eremit
Kylix
Re: Kylix
Hallo Eremit,
ich hoffe, daß dir folgendes Codefragment hilft. Habs mal für ein programm geschrieben, das mir für webseiten eine sitemap erstellt (jede beliebige dateiendung). jedenfalls durchläuft es rekursiv ein verzeichnis. kommt aber von delphi 3 o. 4, sollte auch unter kylix funzen, aber ich weiß nicht, wie es sich mit symlinks verhält, bin gerade dabei das prog zu portieren.
die treenodes sind für meine darstellung da, hab eine baumansicht erstellt.
du brauchst eine routine, die sich einen pfad schnappt und alle vorkommenden dateien erkennt (scanDirectory). jeden dateinamen übergibst du an eine funktion processSearchRec, die dann bestimmen kann, was damit passieren soll.
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
procedure ScanDirectory(Pfad : String; rek : Boolean; trOwner : TTreeNode);
const
Attr = faAnyFile;
var
F : TSearchRec;
Found : Integer;
begin
{schätze, hier sollte besser stehen >Pfad+'/*'< )
Found := FindFirst(Pfad+'\*.*', Attr, F);
while Found = 0 do begin
{Zählt mit, wieviele dateien gefunden wurden}
Inc(datei_c1);
Label5.Caption := IntToStr(datei_c1);
If (f.Name <> '.') and (f.Name <> '..') then
ProcessSearchRec(F, Pfad, trOwner);
Found := FindNext(F);
end;
{ganz wichtig}
FindClose(F);
end;
procedure ProcessSearchRec(SR : TSearchRec; Pfad : String; trOwner : TTreeNode);
var
tn : TTreeNode;
begin
{rekursiv : boolean, gibt an, ob unterverzeichnisse gescannt
werden sollen}
if ((SR.Attr and faDirectory)<>0) and rekursiv then begin
tn := TreeView1.Items.AddChild(trOwner, SR.Name);
tn.Data := Ptr_Ordner;
ScanDirectory(Pfad + '\'+SR.Name, rekursiv, tn);
end else
CheckExtendsion(Pfad + '\'+SR.Name, trOwner);
end;
procedure CheckExtendsion(Datei : String; trOwner : TTreeNode);
var
FileName,
ext : String;
c1, c2 : Integer;
tn : TTreeNode;
begin
FileName := ExtractFileName(Datei);
Ext := '';
for c1 := 1 to Length(FileName) do
if (FileName[c1] = '.') then begin
c2 := c1;
Ext := Copy(FileName, c2+1, Length(FileName) - c2);
end;
{ExtList ist eine Liste mit Erweiterungen
(wer hätte das gedacht?)}
If ExtList.IndexOf(Ext) > -1 then begin
FileName := Copy(Datei, 3, Length(Datei) - 2);
{ist dazu da, msdos pfade in unixpfade zu wandeln}
If CheckBox6.Checked then
for c1 := 1 to Length(Filename) do
If FileName[c1] = '\' then FileName[c1] := '/';
{TreeView}
tn := TreeView1.Items.AddChild(trOwner, ExtractFileName(Datei));
tn.Data := Ptr_Datei;
tn.ImageIndex := Datei_I;
tn.SelectedIndex := Datei_I;
{noch'n dateicounter}
Inc(datei_c2);
Label6.Caption := IntToStr(datei_c2);
end;
end;
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
wie du dir dann die dateien anzeigen lässt, muß du selbst wissen.
noch was zum splash screen: entweder a) du kaufst dir die personal edition für ca. 250 DM oder b) zu kaufst die die volle suite für >2500DM oder c) bei borland gibt's eine anleitung, wie man diesen screen anpassen kann. ansonsten ist das halt der preis fürs kostenlose kylix
greetings
ich hoffe, daß dir folgendes Codefragment hilft. Habs mal für ein programm geschrieben, das mir für webseiten eine sitemap erstellt (jede beliebige dateiendung). jedenfalls durchläuft es rekursiv ein verzeichnis. kommt aber von delphi 3 o. 4, sollte auch unter kylix funzen, aber ich weiß nicht, wie es sich mit symlinks verhält, bin gerade dabei das prog zu portieren.
die treenodes sind für meine darstellung da, hab eine baumansicht erstellt.
du brauchst eine routine, die sich einen pfad schnappt und alle vorkommenden dateien erkennt (scanDirectory). jeden dateinamen übergibst du an eine funktion processSearchRec, die dann bestimmen kann, was damit passieren soll.
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
procedure ScanDirectory(Pfad : String; rek : Boolean; trOwner : TTreeNode);
const
Attr = faAnyFile;
var
F : TSearchRec;
Found : Integer;
begin
{schätze, hier sollte besser stehen >Pfad+'/*'< )
Found := FindFirst(Pfad+'\*.*', Attr, F);
while Found = 0 do begin
{Zählt mit, wieviele dateien gefunden wurden}
Inc(datei_c1);
Label5.Caption := IntToStr(datei_c1);
If (f.Name <> '.') and (f.Name <> '..') then
ProcessSearchRec(F, Pfad, trOwner);
Found := FindNext(F);
end;
{ganz wichtig}
FindClose(F);
end;
procedure ProcessSearchRec(SR : TSearchRec; Pfad : String; trOwner : TTreeNode);
var
tn : TTreeNode;
begin
{rekursiv : boolean, gibt an, ob unterverzeichnisse gescannt
werden sollen}
if ((SR.Attr and faDirectory)<>0) and rekursiv then begin
tn := TreeView1.Items.AddChild(trOwner, SR.Name);
tn.Data := Ptr_Ordner;
ScanDirectory(Pfad + '\'+SR.Name, rekursiv, tn);
end else
CheckExtendsion(Pfad + '\'+SR.Name, trOwner);
end;
procedure CheckExtendsion(Datei : String; trOwner : TTreeNode);
var
FileName,
ext : String;
c1, c2 : Integer;
tn : TTreeNode;
begin
FileName := ExtractFileName(Datei);
Ext := '';
for c1 := 1 to Length(FileName) do
if (FileName[c1] = '.') then begin
c2 := c1;
Ext := Copy(FileName, c2+1, Length(FileName) - c2);
end;
{ExtList ist eine Liste mit Erweiterungen
(wer hätte das gedacht?)}
If ExtList.IndexOf(Ext) > -1 then begin
FileName := Copy(Datei, 3, Length(Datei) - 2);
{ist dazu da, msdos pfade in unixpfade zu wandeln}
If CheckBox6.Checked then
for c1 := 1 to Length(Filename) do
If FileName[c1] = '\' then FileName[c1] := '/';
{TreeView}
tn := TreeView1.Items.AddChild(trOwner, ExtractFileName(Datei));
tn.Data := Ptr_Datei;
tn.ImageIndex := Datei_I;
tn.SelectedIndex := Datei_I;
{noch'n dateicounter}
Inc(datei_c2);
Label6.Caption := IntToStr(datei_c2);
end;
end;
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
wie du dir dann die dateien anzeigen lässt, muß du selbst wissen.
noch was zum splash screen: entweder a) du kaufst dir die personal edition für ca. 250 DM oder b) zu kaufst die die volle suite für >2500DM oder c) bei borland gibt's eine anleitung, wie man diesen screen anpassen kann. ansonsten ist das halt der preis fürs kostenlose kylix
greetings
Re: Kylix
@ e-Man
Hmm, es gibt eine Personal Edition von Kylix für ~250,- DM? Wo haste das denn her? AFAIK gibt es eine Desktop Developer für ~500,- DM und eine Server Developer für >2000,- DM. Oder irre ich mich?
Wenn die Personal Edition existiert, worin bestehen denn da dann die Einschränkungen?
bye
Julius
Hmm, es gibt eine Personal Edition von Kylix für ~250,- DM? Wo haste das denn her? AFAIK gibt es eine Desktop Developer für ~500,- DM und eine Server Developer für >2000,- DM. Oder irre ich mich?
Wenn die Personal Edition existiert, worin bestehen denn da dann die Einschränkungen?
bye
Julius
Re: Kylix
Hab ich wohl den Euro-Preis gesehen?
Noch was, falls du (oder jeder andere auch) Interesse habt, ich habe den Krempel jetzt auf Kylix portiert, ist eine hübsche Unit draus geworden. Download ist demnächst möglich bei sourceforge.net.
Wer solange nicht warten möchte, kann sie auch schon vorher bekommen. (Testpersonen gesucht <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Meldet euch unter holw@gmx.de.
grüße
e-man
Noch was, falls du (oder jeder andere auch) Interesse habt, ich habe den Krempel jetzt auf Kylix portiert, ist eine hübsche Unit draus geworden. Download ist demnächst möglich bei sourceforge.net.
Wer solange nicht warten möchte, kann sie auch schon vorher bekommen. (Testpersonen gesucht <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Meldet euch unter holw@gmx.de.
grüße
e-man