Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Probs mit TString und Treeview (https://www.delphipraxis.net/6320-probs-mit-tstring-und-treeview.html)

Dödel 6. Jul 2003 18:06


Probs mit TString und Treeview
 
Kann jemand mal auf die Seite http://www.tipps.delphi-source.de/da...001005-1.shtml gucken, und mir helfen. Ich will in einen ButtonClick die GetFiles Procedure einbinden, doch irgendwie wills einfach net funzen.
Ich hab jetzt
GetFiles('C:\',treeview2,'.jpg',True);
geschrieben, doch...nix passiert. Es taucht nur ne Fehlermeldung auf. *heul*


>>Würd mich freuen, wenn ihr mir helfen könntet<<

Dödel


PS: Bin noch net sehr lange im Metier Delphi zu Hause.

Daniel 6. Jul 2003 18:13

Re: Probs mit TString und Treeview
 
Hallo,

Delphi-Source.de hat ein angeschlossenes Forum.

Wenn Du auf einer Website ein Tutorial findst und diese Webseite dann auch noch gleich ein Forum bietet, solltest Du grundsätzlich immer dort zuerst nachfragen. :wink:


P.S.: Und grundsätzlich solltest Du die Fehlermeldung selber gleich mit angeben. Sonst ist es fast unmöglich, Dir zu helfen.

Dödel 6. Jul 2003 18:22

Re: Probs mit TString und Treeview
 
Zitat:

Delphi-Source.de hat ein angeschlossenes Forum.

Wenn Du auf einer Website ein Tutorial findst und diese Webseite dann auch noch gleich ein Forum bietet, solltest Du grundsätzlich immer dort zuerst nachfragen
:!: Hab ich. Doch hat mir auch net viel geholfen.

Die Fehlermeldung sagt nix aus, da ich (wenn möglich) nur eine kurze Erklärung brauch, wie ich die Procedure einbinden kann. :oops: :?:

Oder ein anderes Tutorial, wo ich eine Funktion zum Erstellen einer Liste mit allen Dateien auf einer Festplatte/Partition.

Dödel

Daniel 6. Jul 2003 18:27

Re: Probs mit TString und Treeview
 
Hallo,

also - die Prozedur ist wie folgt deklariert:
Delphi-Quellcode:
procedure GetFiles(const Directory: string; var Files: TStrings;
  const FileMask: string = '*.*'; const SubFolders: Boolean = False);
Du übergibst also erst das Startverzeichnis als String (z.B. 'C:\'), dann ein Objekt, welches von TStrings abgeleitet ist (z.B. TStringList), dann optional die Dateimaske (z.B. '*.jpg') und zu guter Letzt noch ein Flag, ob Unterverzeichnisse berücksichtigt werden sollen oder nicht (z.B. TRUE).

Angenommen, Du hast ein Memo-Feld auf Deinem Formular und dieses trägt den Namen 'Memo1'. Dann könntest Du in der onClick-Prozedur Deines Buttons etwa folgendes schreiben:
Delphi-Quellcode:
GetFiles('C:\', Memo1.Lines, '*.jpg', TRUE);
Dann würde das Ergebnis dieser Suche in das MemoFeld eingetragen werden.

Daniel B 6. Jul 2003 18:29

Re: Probs mit TString und Treeview
 
Hallo,
Zitat:

Zitat von Dödel
:!: Hab ich. Doch hat mir auch net viel geholfen.

Naja, auch der Autor ist bekannt und den kann man natürlich per Mail ansprechen.

Zitat:

Die Fehlermeldung sagt nix aus, da ich (wenn möglich) nur eine kurze Erklärung brauch, wie ich die Procedure einbinden kann. :oops: :?:
Eine Fehlermeldung die nichts aussagt? :shock: Lieber Gott, hoffentlich bekomme ich nie sowas...
Also, wo und wann tritt der FEhler auf? Kannst Du Dein Projekt kompilieren? Oder startest Du die Exe und beim benutzen tritt dann der Fehler auf?

Wenn es sich nicht kompilieren lässt, dann steht doch unten die Meldung, diese anklicken, dann Strg+c, dann hier schreiben mit Strg+v.
Wenn es eine normale Meldung ist, also mit einer MessageBox, dann mach ein Bild davon oder Tippe den Text ab.

Grüsse, Daniel :hi:

Dödel 6. Jul 2003 18:32

Re: Probs mit TString und Treeview
 
Jetzt kommt bei mir wieder eine neue Fehlermeldung:

Zitat:

Constant Object cannot be passed as var parmeter
Ich bin am verzweifeln.

danke Daniel, dass du mir bisher schon recht viel geholfen hast!!!! :angle:

Dödel

mirage228 6. Jul 2003 18:44

Re: Probs mit TString und Treeview
 
mach in der deklaration mal das "VAR" vor Files weg und versuchs so!

Dödel 6. Jul 2003 18:51

Re: Probs mit TString und Treeview
 
AAAAHHHHHH.
*fluch*

Tschuldigung, aber ich bin so verdammt blöd.
Ein dummes var lässt mich den ganzen Sonntag grübeln

Danke @ all

Dödel

Daniel B 6. Jul 2003 19:02

Re: Probs mit TString und Treeview
 
Hallo,

oder mit leicht verkürztem Kopf und Pfad und Dateiendung werden hintereinader eingegeben, also von der Reihenfolge der Parameter her. Was evtl. etwas "schöner" ist.
Delphi-Quellcode:
procedure GetFiles(const Directory, FileMask: String; Files: TStrings; SubFolders: Boolean);
  //Hilfsfunktion, um Schrägstriche hinzuzfügen, wenn nötig
  function SlashSep(const Path, S: string): string;
  begin
    if AnsiLastChar(Path)^ <> '\' then Result := Path + '\' + S
    else Result := Path + S;
  end;

var SearchRec: TSearchRec;
    nStatus: Integer;
begin
  //Zuerst alle Dateien im aktuelle Verzeichnis finden

  if FindFirst(SlashSep(Directory, FileMask), faAnyFile-faDirectory-faVolumeID,
  SearchRec) = 0 then
  begin
    try
      repeat
        Files.Add(SlashSep(Directory, SearchRec.Name));
      until FindNext(SearchRec) <> 0;
    finally
      SysUtils.FindClose(SearchRec);
    end;
  end;

  //Als nächstes nach Unterverzeichnissen suchen und, wenn benötigt, durchsuchen
  if SubFolders then
  begin
    if FindFirst(SlashSep(Directory,'*.*'), faAnyFile, SearchRec) = 0 then
    begin
      try
        repeat
          //Wenn es ein Verzeichnis ist, Rekursion verwenden
          if (SearchRec.Attr and faDirectory) <> 0 then
          begin
            if ((SearchRec.Name <> '.') and (SearchRec.Name <> '..')) then
              GetFiles(SlashSep(Directory, SearchRec.Name), FileMask, Files, SubFolders);
          end;
        until FindNext(SearchRec) <> 0;
      finally
        SysUtils.FindClose(SearchRec);
      end;
    end;
  end;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetFiles('C:\', '*.jpg*', Memo1.Lines, False);
end;
Grüsse, Daniel :hi:

Tom 7. Jul 2003 23:22

Re: Probs mit TString und Treeview
 
Zitat:

Zitat von Daniel B
oder mit leicht verkürztem Kopf und Pfad und Dateiendung werden hintereinader eingegeben, also von der Reihenfolge der Parameter her. Was evtl. etwas "schöner" ist.
Delphi-Quellcode:
procedure GetFiles(const Directory, FileMask: String; Files: TStrings; SubFolders: Boolean);

Nun ja, im Gegensatz zum Original muss Du beim Aufruf immer vier Parameter angeben. Das Original kommt im Standardaufruf (Maske = *.*, Keine Unterordner) mit zwei Parameter aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz