![]() |
Pfade in TStrings abbilden...
Guten Morgen
Ich habe eine Liste mit Pfaden: z.B. (Originalliste)
SQL-Code:
GG_OWA-Access
GG_Axioma GG_Winbau zz_alle Direktion P\+F zz_alle Informatikdienste GG_Vitruviusdaten RG_PC_Inventar_Daten GG_AbuWin GG_IDT_IC GG_IDT GG_IDT_IC|GG_SWF-Spec GG_IDT_IC|RG_IDT_WSUS_Admin GG_IDT_IC|GG_PEKAUsers GG_IDT_IC|RG_FV_Matrix GG_IDT_IC|RG_P_F_Matrix GG_IDT_IC|GG_WINAG GG_IDT_IC|RG_FV_Public GG_IDT_IC|RG_P_F_Public GG_IDT_IC|GG_FV GG_IDT_IC|GG_FV|RG_Scan_FV GG_IDT_IC|GG_FV|RG_FV_Matrix GG_IDT_IC|GG_FV|RG_P_F_Matrix GG_IDT_IC|GG_FV|RG_FV_Public GG_IDT_IC|GG_FV|RG_P_F_Public GG_IDT_IC|GG_FV|RG_P_F GG_IDT_IC|RG_P_F GG_IDT_IC|RG_FV GG_IDT_IC|RG_IC GG_IDT_IC|RG_Museumplus GG_IDT|GG_Mobile-Access GG_IDT|RG_EVA GG_IDT|GG_SWF-MM GG_IDT|GG_Axioma GG_IDT|RG_Scan_IDT GG_IDT|GG_rbiAusmass GG_IDT|RG_rbiAusmass GG_IDT|GG_Teamviewer GG_IDT|RG_Balance GG_IDT|RG_PROJ_ICT-Schulen GG_IDT|GG_RealAudio-Access GG_IDT|GG_FTP-Access GG_IDT|RG_HW_Inventar_Daten GG_IDT|GG_AbacusUsers GG_IDT|GG_NestUsers GG_IDT|RG_FV_Matrix GG_IDT|RG_P_F_Matrix GG_IDT|GG_Alle-StadtThun GG_IDT|RG_PC_Inventar_Daten_R GG_IDT|RG_Taxme_TBA GG_IDT|RG_Taxme_SuI GG_IDT|RG_Taxme_SO GG_IDT|RG_FV_Public GG_IDT|RG_P_F_Public GG_IDT|GG_FV GG_IDT|GG_FV|RG_Scan_FV GG_IDT|GG_FV|RG_FV_Matrix GG_IDT|GG_FV|RG_P_F_Matrix GG_IDT|GG_FV|RG_FV_Public GG_IDT|GG_FV|RG_P_F_Public GG_IDT|GG_FV|RG_P_F GG_IDT|RG_P_F GG_IDT|RG_Taxme GG_IDT|RG_IC_R GG_IDT|RG_TC_R GG_IDT|RG_SC_R GG_IDT|RG_FV GG_IDT|RG_IDT Diese versuche ich nun in einer anderen Liste korrekt abzubilden, mit Korrekt meine ich: Der Eingangsreihenfolge entsprechend, aber mit Korrekter Struktur. Wie in der oberen Liste entnehmen kann, ist eigentlich nur GG_IDT fehl am Platz. Die zweite Ebene kommt bereits korrekt daher... Das Ergebnis sollte aber nun so ausschauen: (so sollte es am Schluss ausschauen Liste)
SQL-Code:
Ich habs mal mit untenstehendem Code versucht. Lustig ist nur, das jetzt zwar die Erste Ebene stimmt, aber die Zweite Ebene
GG_OWA-Access
GG_Axioma GG_Winbau zz_alle Direktion P\+F zz_alle Informatikdienste GG_Vitruviusdaten RG_PC_Inventar_Daten GG_AbuWin GG_IDT_IC GG_IDT_IC|GG_SWF-Spec GG_IDT_IC|RG_IDT_WSUS_Admin GG_IDT_IC|GG_PEKAUsers GG_IDT_IC|RG_FV_Matrix GG_IDT_IC|RG_P_F_Matrix GG_IDT_IC|GG_WINAG GG_IDT_IC|RG_FV_Public GG_IDT_IC|RG_P_F_Public GG_IDT_IC|GG_FV GG_IDT_IC|GG_FV|RG_Scan_FV GG_IDT_IC|GG_FV|RG_FV_Matrix GG_IDT_IC|GG_FV|RG_P_F_Matrix GG_IDT_IC|GG_FV|RG_FV_Public GG_IDT_IC|GG_FV|RG_P_F_Public GG_IDT_IC|GG_FV|RG_P_F GG_IDT_IC|RG_P_F GG_IDT_IC|RG_FV GG_IDT_IC|RG_IC GG_IDT_IC|RG_Museumplus GG_IDT GG_IDT|GG_Mobile-Access GG_IDT|RG_EVA GG_IDT|GG_SWF-MM GG_IDT|GG_Axioma GG_IDT|RG_Scan_IDT GG_IDT|GG_rbiAusmass GG_IDT|RG_rbiAusmass GG_IDT|GG_Teamviewer GG_IDT|RG_Balance GG_IDT|RG_PROJ_ICT-Schulen GG_IDT|GG_RealAudio-Access GG_IDT|GG_FTP-Access GG_IDT|RG_HW_Inventar_Daten GG_IDT|GG_AbacusUsers GG_IDT|GG_NestUsers GG_IDT|RG_FV_Matrix GG_IDT|RG_P_F_Matrix GG_IDT|GG_Alle-StadtThun GG_IDT|RG_PC_Inventar_Daten_R GG_IDT|RG_Taxme_TBA GG_IDT|RG_Taxme_SuI GG_IDT|RG_Taxme_SO GG_IDT|RG_FV_Public GG_IDT|RG_P_F_Public GG_IDT|GG_FV GG_IDT|GG_FV|RG_Scan_FV GG_IDT|GG_FV|RG_FV_Matrix GG_IDT|GG_FV|RG_P_F_Matrix GG_IDT|GG_FV|RG_FV_Public GG_IDT|GG_FV|RG_P_F_Public GG_IDT|GG_FV|RG_P_F GG_IDT|RG_P_F GG_IDT|RG_Taxme GG_IDT|RG_IC_R GG_IDT|RG_TC_R GG_IDT|RG_SC_R GG_IDT|RG_FV GG_IDT|RG_IDT wird nun strukturell nicht richtig dargestellt.
Delphi-Quellcode:
Dieser Code führt zu diesem Ergebnis:
procedure TForm1.ForceListItems(sliList:TStrings; sliPath: String; sliPathDelim:Char);
var sL: TStringList; I: Integer; index: Integer; path: String; begin sL := TStringList.Create; try path := sliPath; // ersetze den delimiter mit einem zeilenumbruch for I := 1 to Length(sliPath) do if sliPath[i] = sliPathDelim then sliPath[i] := #13; // der pfad lässt sich nun in den einzelnen elementen // in eine liste schreiben sL.Text := sliPath; for I := 0 to sL.Count - 1 do begin if sliList.IndexOf(sL[i]) = -1 then begin if (index > 0) then sliList.Insert(index,path) else sliList.Add(path); end else index := sliList.IndexOf(sL[i]) + 1; end; finally FreeAndNil(sL); end; end;
SQL-Code:
Man beachte die Fehler : "GG_IDT_IC|GG_FV" und "GG_IDT|GG_FV" Stehen zu weit unten...
GG_OWA-Access
GG_Axioma GG_Winbau zz_alle Direktion P\+F zz_alle Informatikdienste GG_Vitruviusdaten RG_PC_Inventar_Daten GG_AbuWin GG_IDT_IC GG_IDT_IC|RG_Museumplus GG_IDT_IC|RG_IC GG_IDT_IC|RG_FV GG_IDT_IC|RG_P_F GG_IDT_IC|GG_FV|RG_P_F GG_IDT_IC|GG_FV|RG_P_F GG_IDT_IC|GG_FV|RG_P_F_Public GG_IDT_IC|GG_FV|RG_P_F_Public GG_IDT_IC|GG_FV|RG_FV_Public GG_IDT_IC|GG_FV|RG_FV_Public GG_IDT_IC|GG_FV|RG_P_F_Matrix GG_IDT_IC|GG_FV|RG_P_F_Matrix GG_IDT_IC|GG_FV|RG_FV_Matrix GG_IDT_IC|GG_FV|RG_FV_Matrix GG_IDT_IC|GG_FV|RG_Scan_FV GG_IDT_IC|GG_FV|RG_Scan_FV GG_IDT_IC|GG_FV GG_IDT_IC|RG_P_F_Public GG_IDT_IC|RG_FV_Public GG_IDT_IC|GG_WINAG GG_IDT_IC|RG_P_F_Matrix GG_IDT_IC|RG_FV_Matrix GG_IDT_IC|GG_PEKAUsers GG_IDT_IC|RG_IDT_WSUS_Admin GG_IDT_IC|GG_SWF-Spec GG_IDT GG_IDT|RG_IDT GG_IDT|RG_FV GG_IDT|RG_SC_R GG_IDT|RG_TC_R GG_IDT|RG_IC_R GG_IDT|RG_Taxme GG_IDT|RG_P_F GG_IDT|GG_FV|RG_P_F GG_IDT|GG_FV|RG_P_F GG_IDT|GG_FV|RG_P_F_Public GG_IDT|GG_FV|RG_P_F_Public GG_IDT|GG_FV|RG_FV_Public GG_IDT|GG_FV|RG_FV_Public GG_IDT|GG_FV|RG_P_F_Matrix GG_IDT|GG_FV|RG_P_F_Matrix GG_IDT|GG_FV|RG_FV_Matrix GG_IDT|GG_FV|RG_FV_Matrix GG_IDT|GG_FV|RG_Scan_FV GG_IDT|GG_FV|RG_Scan_FV GG_IDT|GG_FV GG_IDT|RG_P_F_Public GG_IDT|RG_FV_Public GG_IDT|RG_Taxme_SO GG_IDT|RG_Taxme_SuI GG_IDT|RG_Taxme_TBA GG_IDT|RG_PC_Inventar_Daten_R GG_IDT|GG_Alle-StadtThun GG_IDT|RG_P_F_Matrix GG_IDT|RG_FV_Matrix GG_IDT|GG_NestUsers GG_IDT|GG_AbacusUsers GG_IDT|RG_HW_Inventar_Daten GG_IDT|GG_FTP-Access GG_IDT|GG_RealAudio-Access GG_IDT|RG_PROJ_ICT-Schulen GG_IDT|RG_Balance GG_IDT|GG_Teamviewer GG_IDT|RG_rbiAusmass GG_IDT|GG_rbiAusmass GG_IDT|RG_Scan_IDT GG_IDT|GG_SWF-MM GG_IDT|RG_EVA GG_IDT|GG_Mobile-Access Nun wie modifiziere ich den Code um das gewünschte Ergebnis zu erhalten? :cat: |
Re: Pfade in TStrings abbilden...
|
Re: Pfade in TStrings abbilden...
Zitat:
|
Re: Pfade in TStrings abbilden...
Und
![]() Zitat:
|
Re: Pfade in TStrings abbilden...
Zitat:
Denn das problem ist schon komplizierter als es auf den ersten Blick erscheint. Ich habe schon etliche Stunden damit verbracht. Denn Ich habe ja kaum anhaltspünkte um Einträge zu vergleichen, die Reihenfolge soll ja erstmal so bleiben wie sie ist, nur die Struktur soll korrekt dargestellt werden. Vielleicht kannst du mit ein Beispiel geben wie das mit custom sort funktionieren könnte ?! ich bin nähmlich langsam am Ende meines Lateins... |
Re: Pfade in TStrings abbilden...
Im Prinzip brauchst du doch die Strings einfach nur CaseInsensitiv (zur Sicherheit) alphabetisch sortieren.
|
Re: Pfade in TStrings abbilden...
Zitat:
siehe "Original Liste" und "so sollte es am Schluss ausschauen Liste" ! |
Re: Pfade in TStrings abbilden...
@TE: Wenn ich dich jetzt richtig verstehe, möchtest Du, dass alle Verzeichnisse von Ebene A aufgelistet werden und unter diese alle Verzeichnisse der ebene B einsortiert werden, ohne dass die Reihenfolge vertauscht wird.
Ist das soweit richtig? Gruß Thomas |
Re: Pfade in TStrings abbilden...
genau das meine ich...
|
Re: Pfade in TStrings abbilden...
können die Unterverzeichnisse wenigstens Alphabetisch sortiert sein, bzw. können die sogar in 'ner anderen womöglich anders "sortierten" Reinfolge sein, oder müssen die auch in ihrer
Reinfolge bleiben? wenn die Unterverzeichnisse auch in ihrer Reinfolge bleiben sollen, dann wär's wohl am Einfachsten das Ganze in 'nen Baum zu zerlegen und danach neu wieder zusammenzusetzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 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 by Thomas Breitkreuz