AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ShellTreeView "expandieren"

Ein Thema von F.W. · begonnen am 22. Dez 2003 · letzter Beitrag vom 5. Feb 2004
 
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#11

Re: ShellTreeView "expandieren"

  Alt 3. Feb 2004, 20:57
Ich bin jetzt soweit, dass es geht, beim wiedereinlesen ist alles ungeordnet und alle Ordner, die Dateien beinhalten sind alle Doppelt.
Hier der Code:
Delphi-Quellcode:
//Zum Erstellen eines Abbilds
var
 AText, DirRead: String;
 L: TStringList;
 ANb, I: Integer;
begin
 if SelectDirectory('Verzeichnis zum durchleuchten wählen', 'MyComputer', DirRead) = False then Exit;
 InputQuery('Pfad ändern', 'Sie können den Pfad nun noch ändern', DirRead);

 DirRead := SetPfad(DirRead, True);

 L := TStringList.Create;
   try
 FileList(DirRead, '*.*', True, L);
 for I := 0 to L.Count-1 do begin
     AText := L[I];
     if Pos('\.', AText) = Length(AText)-1 then begin
        SetLength(AText, Length(AText)-2);
     end;
     ANb := ReadForm.CountSlashes(AText)-2;
     L[I] := IntToStr(ANb)+'*]'+ExtractFileName(AText);
 end;

 if SDIa.Execute then L.SaveToFile(SDIa.FileName);
   finally
 L.Free;
   end;
end;

//Und zum Wieder ansehen(Tree ist der TTreeView)
var
 Indes: Array of Integer;
 L: TStringList;

 ALevel, LGes, LNb, I: Integer;
 AItem, AText: String;
 Start, Ende: Cardinal;
begin
 if not ODia.Execute then Exit;
 L := TStringList.Create;
   try
 L.LoadFromFile(ODia.FileName);

 SetLength(Indes, L.Count+1);
 for I := 0 to L.Count-1 do begin
     AItem := L[I];
     LGes := Length(AItem);
     LNb := Pos('*]', AItem)-1;
     ALevel := StrToInt(Copy(AItem, 1, LNb));
     AText := Copy(AItem, LNb+3, LGes-LNb);

     Indes[ALevel] := I;

     if ALevel = 0 then Tree.Items.Add(NIL, AText) else
        Tree.Items.AddChild(Tree.Items[Indes[ALevel-1]], AText);
 end;
   finally
 L.Free;
   end;
end;
Das es ungeordnet ist, ist nicht so schlimm, das einzige was mich noch stört und ich mir bis eben gerade noch die Zähne ausgebissen habe (ich weiß noch nicht wie): Wie bekomme ich die doppelten Ordner weg?

PS: Danke mirage, dass du so schnell Rückantwort schreibst, denn es liegt ja doch schon etwas zurück!

[Edit: Wichtig ist beim löschen, dass NICHT die Zeile gelöscht wird, die ohne mein SetLength(..) beim Einlesen das '\.' dahinter hätte!]
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 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