AGB  ·  Datenschutz  ·  Impressum  







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

Pfade in TStrings abbilden...

Offene Frage von "cherry"
Ein Thema von cherry · begonnen am 5. Feb 2009 · letzter Beitrag vom 6. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Pfade in TStrings abbilden...

  Alt 5. Feb 2009, 07:39
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?
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Pfade in TStrings abbilden...

  Alt 5. Feb 2009, 08:46
Schau dir mal Delphi-Referenz durchsuchenTStringList.StrictDelimiter, Delphi-Referenz durchsuchenTStringList.DelimitedText und Delphi-Referenz durchsuchenTStrings.Sort() an.
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#3

Re: Pfade in TStrings abbilden...

  Alt 5. Feb 2009, 08:50
Zitat von Muetze1:
Ich wüsste nicht in wiefern mir das helfen sollte?!
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Pfade in TStrings abbilden...

  Alt 5. Feb 2009, 09:01
Und Delphi-Referenz durchsuchenTStringlist.CustomSort wäre auch nicht schlecht.
Zitat von Cherry:
Ich wüsste nicht in wiefern mir das helfen sollte?!
Hast Du es Dir denn angeschaut?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#5

Re: Pfade in TStrings abbilden...

  Alt 5. Feb 2009, 09:44
Zitat von Union:
Und Delphi-Referenz durchsuchenTStringlist.CustomSort wäre auch nicht schlecht.
Naja bist du dir wirklich sicher das das mit custom sort funktioniert, oder kommt das so aus der hüfte?
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...
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#6

Re: Pfade in TStrings abbilden...

  Alt 5. Feb 2009, 10:22
Im Prinzip brauchst du doch die Strings einfach nur CaseInsensitiv (zur Sicherheit) alphabetisch sortieren.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#7

Re: Pfade in TStrings abbilden...

  Alt 5. Feb 2009, 10:23
Zitat von himitsu:
Im Prinzip brauchst du doch die Strings einfach nur CaseInsensitiv (zur Sicherheit) alphabetisch sortieren.
Eben nicht! Ich will sie in der Reihenfolge wie sie kommen, nur der Struktur entsprechend!
siehe "Original Liste" und "so sollte es am Schluss ausschauen Liste" !
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.889 Beiträge
 
Delphi 12 Athens
 
#8

Re: Pfade in TStrings abbilden...

  Alt 5. Feb 2009, 10:38
@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
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#9

Re: Pfade in TStrings abbilden...

  Alt 5. Feb 2009, 10:43
genau das meine ich...
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#10

Re: Pfade in TStrings abbilden...

  Alt 5. Feb 2009, 10:45
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz