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:
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
Ich habs mal mit untenstehendem Code versucht. Lustig ist nur, das jetzt zwar die Erste Ebene stimmt, aber die Zweite Ebene
wird nun strukturell nicht richtig dargestellt.
Delphi-Quellcode:
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;
Dieser Code führt zu diesem Ergebnis:
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_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
Man beachte die Fehler : "GG_IDT_IC|GG_FV" und "GG_IDT|GG_FV" Stehen zu weit unten...
Nun wie modifiziere ich den Code um das gewünschte Ergebnis zu erhalten?