Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Im TreeView Dateien ohne endung (https://www.delphipraxis.net/150022-im-treeview-dateien-ohne-endung.html)

Uwe 111 5. Apr 2010 18:59


Im TreeView Dateien ohne endung
 
Hallo und Frohe Ostern noch

Mein Problem ist, ich habe dieTreeView aus ein Ordner befüllt. Aber ich möchte die endungen wie .txt nicht haben.
Also zum Beispiel die Datei Test.txt soll nur Test im Treeview stehen.

Hier mein Quellcode wie ich die TreeView befüllt habe

Delphi-Quellcode:
type
  pNodeInfo = ^tNodeInfo;
  tNodeInfo = record
      Path: Boolean;
      Name: String;
    end;


procedure TForm1.FindFilesTree(aTree: tTreeView; aPath: String;
  aNode: tTreeNode; aWithFiles: Boolean);
Var
  SearchRec: tSearchRec;
  NodeTmp: tTreeNode;
  Info: pNodeInfo;
Begin
  aTree.Items.BeginUpdate;

  // Wenn am Ende der Pfadangabe noch kein \ steht, dieses hinzufügen
  If aPath [Length (aPath)] <> '\' Then
    aPath := aPath + '\';

  If FindFirst (aPath + '*.*', faDirectory, SearchRec) = 0 Then
    Begin
      Repeat
        // Wenn es sich um ein Verzeichnis handelt
        If (SearchRec.Attr and faDirectory = faDirectory)
          and (SearchRec.Name[1] <> '.')
        Then
          Begin
            If (SearchRec.Attr and faDirectory > 0) then
              Begin
                New (Info);
                Info^.Path := True;
                Info^.Name := aPath + SearchRec.Name;

                // zum aktuellen Eintrag hinzufügen
                aNode := aTree.Items.AddChildObject (aNode, SearchRec.Name, Info);
              End;

            // Eintrag merken
            NodeTmp := aNode.Parent;
            // auf Untereinträge prüfen
            FindFilesTree (aTree, aPath + SearchRec.Name, aNode, aWithFiles);
            // Eintrag wiederholen
            aNode := NodeTmp;
          End
        Else
          // Eintrag ist eine Datei
          If aWithFiles
            and (SearchRec.Name <> '.') and (SearchRec.Name <> '..')
          Then
            Begin
              New (Info);
              Info^.Path := False;
              Info^.Name := aPath + SearchRec.Name;

              aTree.Items.AddChildObject (aNode, SearchRec.Name, Info);
            End;

      // solange weiter bis keine wieteren Dateien/Verzeichniss gefunden werden
      Until FindNext (SearchRec) <> 0;

      FindClose(SearchRec);
    End;

  aTree.Items.EndUpdate;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Path := ExtractFilePath(Application.ExeName) + 'Daten\';
  FindFilesTree (TreeView1, Path, nil, True);
end;
MfG
Uwe 111

mkinzler 5. Apr 2010 19:03

Re: Im TreeView Dateien ohne endung
 
Dann schneide den String doch entsprechend ab:
-Position von letzem Punkt ermitteln ( Pos()/PosEx()) und dann in anderen Strinb kopieren (Copy()) oder Kürzen (SetLength())

daywalker9 5. Apr 2010 19:03

Re: Im TreeView Dateien ohne endung
 
Schau dir mal die Funktion ExtractFileName

Delphi-Quellcode:
var
  myFileName : string;
begin
  ShowMessage(ExtractFileName(myFileName));
end;
an.

mkinzler 5. Apr 2010 19:04

Re: Im TreeView Dateien ohne endung
 
ExtractFileName() entfernt dern Pfad, aber nicht die Endung!

daywalker9 5. Apr 2010 19:06

Re: Im TreeView Dateien ohne endung
 
Zitat:

Zitat von mkinzler
ExtractFileName() entfernt dern Pfad, aber nicht die Endung!

Stimmt, hatte ich vergessen.

himitsu 5. Apr 2010 19:07

Re: Im TreeView Dateien ohne endung
 
ExtractFileName Holt doch nur den Dateinamen (samt Endung) aus einem Pfad raus?

ChangeFileExt mit '' als neue Endung wäre da passender.

Uwe 111 5. Apr 2010 19:20

Re: Im TreeView Dateien ohne endung
 
Hallo

himitsu
Zitat:

ExtractFileName Holt doch nur den Dateinamen (samt Endung) aus einem Pfad raus?

ChangeFileExt mit '' als neue Endung wäre da passender.
Ich möchte im Treeview überhaubt keine endung haben.

mkinzler 5. Apr 2010 19:21

Re: Im TreeView Dateien ohne endung
 
Das macht doch das ChangeFileExt()

himitsu 5. Apr 2010 19:25

Re: Im TreeView Dateien ohne endung
 
Zitat:

Zitat von mkinzler
Das macht doch das ChangeFileExt()

Jupp, ChangeFileExt mit '' würde die Dateiendung durch '' (zwei Apostroph mit nichts dazwischen) aka Nichts ersetzen. :stupid:

mkinzler 5. Apr 2010 19:26

Re: Im TreeView Dateien ohne endung
 
Aber nur im String, an der Datei wird nichts geändert

Uwe 111 5. Apr 2010 19:32

Re: Im TreeView Dateien ohne endung
 
Hallo

Nein die Dateiname soll gleich bleiben. Nur die endung soll weg

mkinzler 5. Apr 2010 19:34

Re: Im TreeView Dateien ohne endung
 
Und genau dass macht diese Funktion!
Delphi-Quellcode:
newfname := ChangeFileExt( 'Test.txt', '');
ergibt Test!
Hätte ein kurzer Test deinerseits auch ergeben!

Neutral General 5. Apr 2010 19:34

Re: Im TreeView Dateien ohne endung
 
Zitat:

Zitat von himitsu
ChangeFileExt mit '' als neue Endung wäre da passender.

Zitat:

Zitat von mkinzler
Das macht doch das ChangeFileExt()

Zitat:

Zitat von himitsu
Zitat:

Zitat von mkinzler
Das macht doch das ChangeFileExt()

Jupp, ChangeFileExt mit '' würde die Dateiendung durch '' (zwei Apostroph mit nichts dazwischen) aka Nichts ersetzen. :stupid:

Zitat:

Zitat von mkinzler
Aber nur im String, an der Datei wird nichts geändert

Reden die beiden Chinesisch? :wall:

Uwe 111 5. Apr 2010 19:39

Re: Im TreeView Dateien ohne endung
 
Hallo

Also ich habe die TreeView aus ein Ordner befüllt und da sind mehre Dateien drin. Mit Text.txt ist nur ein Beispiel.

mkinzler 5. Apr 2010 19:40

Re: Im TreeView Dateien ohne endung
 
Dann ersetzt dort halt die Stringkonstanten die Variable

Uwe 111 5. Apr 2010 19:43

Re: Im TreeView Dateien ohne endung
 
Wenn ich es wüste würde ich ja nicht fragen

mkinzler 5. Apr 2010 19:46

Re: Im TreeView Dateien ohne endung
 
Delphi-Quellcode:
Variable := ChangeFileExt( Variable, '');

Uwe 111 5. Apr 2010 20:21

Re: Im TreeView Dateien ohne endung
 
Hallo

Ich habe es so gemacht da hat der Dateiname immer noch die .txt endung.

Delphi-Quellcode:
  Path := ChangeFileExt( 'Daten', '');

mkinzler 5. Apr 2010 20:27

Re: Im TreeView Dateien ohne endung
 
-'Daten' ist ja wieder eine Konstante
-der Dateiname steht in SearchRec.Name

Uwe 111 5. Apr 2010 20:39

Re: Im TreeView Dateien ohne endung
 
Danke ich habe es hinbekommen. Und zwar so

Delphi-Quellcode:
Begin
  New (Info);
  Info^.Path := False;
  Info^.Name := aPath + SearchRec.Name;
  SearchRec.Name := ChangeFileExt( SearchRec.Name , ''); <-------
  aTree.Items.AddChildObject (aNode, SearchRec.Name, Info);
End;

mkinzler 5. Apr 2010 20:41

Re: Im TreeView Dateien ohne endung
 
Sauberer wäre es aber so:

Delphi-Quellcode:
var
    Name: string;
...
Begin
  New (Info);
  Info^.Path := False;
  Info^.Name := aPath + SearchRec.Name;
  Name := ChangeFileExt( SearchRec.Name , ''); <-------
  aTree.Items.AddChildObject (aNode, Name, Info);
End;

Uwe 111 5. Apr 2010 21:08

Re: Im TreeView Dateien ohne endung
 
OK Danke :cheers:

CVi 21. Jan 2011 14:37

AW: Im TreeView Dateien ohne endung
 
wie bekomme ich es hin das mir nur bestimmte dateitypen angezeigt werden zb. *.txt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:18 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