AGB  ·  Datenschutz  ·  Impressum  







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

Ordner im Windows Verzeichnis suchen

Ein Thema von Tpercon · begonnen am 1. Aug 2002 · letzter Beitrag vom 2. Aug 2002
Antwort Antwort
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#1

Ordner im Windows Verzeichnis suchen

  Alt 1. Aug 2002, 11:04
Hi

Ich möchte in einem TreeView den Pfad (z.B.: C:\Windows\Anwendungsdaten\Adobe\) anzeigen, den ich zuvor gespeichert habe. Dazu habe ich folgenden Code geschrieben:
Code:
z:=0;
While AnsiPos('\',pfad)<>0 do
 begin
  i:=AnsiPos('\',pfad);
  s:=copy(pfad,1,i-1);
  For i:=z to TreeView1.Items.Count-1 do
   If TreeView1.Items.Item[i].Text=s
    then
     begin
      TreeView1.Items.Item[i].Expand(False);
      z:=i+1;
      Break;
     end;
  pfad:=copy(pfad,Length(s)+2,Length(pfad)-Length(s)-1);
 end;
Warum funktioniert das bei manchen Ordnern im Windows Verzeichnis nicht, der Ordner ist definitiv da?

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 1. Aug 2002, 11:53
Ich weiss zwar nicht, wie Du die Verzeichnisse ausgelesen hast, aber kann es sein, dass es durch System- und versteckte Dateien/Verzeichnisse diese Probleme gibt?
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#3
  Alt 1. Aug 2002, 13:47
Aber das TreeView enthält exakt die gleichen Ordner, wie vorher. Ich find da einfach keine Lösung.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 1. Aug 2002, 14:46
Moin Tpercon,

wie liest Du denn die Ornderstruktur aus?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#5
  Alt 1. Aug 2002, 15:12
Ich lese ganz normal mit FindFirst,FindNext,... nur die Ordner ein. Daran kann es aber auch nicht liegen.

Der Index wird doch von oben nach unten durch gezählt oder? Damit müßte es doch stimmen, dass ein Unterordner einen höheren Index hat, als der darüber und mein Code somit richtig sein?!
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 1. Aug 2002, 16:02
Poste mal die Zeile(n) mit dem FindFirst!
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#7
  Alt 1. Aug 2002, 17:20
Hi

Hier die paar Zeilen, die in Frage kommen.

Hiermit lese ich die obersten Ordner nach den Laufwerken ein:
Code:
procedure TForm1.showdir(Node:TTreeNode;s:string);
var
  datei: TSearchRec;
begin
  If FindFirst(s, faDirectory, datei) = 0
    then
    begin
      try
        repeat
          If (datei.Name = '.') or (datei.Name = '..') or (datei.Attr and fadirectory = 0)
          then Continue;
          TreeView1.Items.AddChild(Node, datei.Name);
        until Findnext(datei) <> 0;
      finally
      FindClose(datei);
    end;
  end;
end;
Dann der Code vom TreeViewExpanding:
Code:
procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TreeNode; var AllowExpansion: Boolean);
begin
  dir(Node, true);
  Node.AlphaSort;
end;
Die Funktion dir liest dabei nur weitere Ordner ein Level tiefer aus. Im Prinzip wie ShowDir.
Code:
procedure TForm1.dir(Node:TTreeNode; Ordner:boolean);
var
  s, pfad: string;
  i: integer;
  N: TTreeNode;
  datei: TSearchRec;
  ...
begin
  if ordner then
  begin
    TreeView1.Items.BeginUpdate;
    Node.DeleteChildren;
  end
  else
  begin
    ...
  end;
  N := Node;
  s := '';
  while N <> nil do
    begin
      s := N.Text + #92 + s;
      N := N.Parent;
    end;
  pfad:=s;
  s := pfad + '*.*';
  if FindFirst(s,faDirectory,datei) = 0 then
  begin
    try
      repeat
        if (datei.Name='.')or(datei.Name='..') then
          Continue;
        if (datei.Attr and fadirectory > 0) and (ordner = true) then
        begin
          N := TreeView1.Items.AddChild(Node, datei.Name);
          showdir(N, pfad + datei.Name + '\*.*');
        end;
      if (datei.Attr and fadirectory = 0) and (ordner = false) then
        begin
          ...
        end;
      until Findnext(datei)<>0;
    finally
    FindClose(datei);
    end;
  end;
  if ordner then
    TreeView1.Items.EndUpdate
  else
  begin
    ...
  end;
end;
by Daniel B; Code-Form.
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#8
  Alt 2. Aug 2002, 18:36
Hi

Hat keiner ne Idee?

@ Daniel B: Hast wohl Langeweile, meine Formatierung find ich auch schön.

Gruß
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#9

OT:

  Alt 2. Aug 2002, 20:11
Zitat von Tpercon:
@ Daniel B: Hast wohl Langeweile, meine Formatierung find ich auch schön.
Hi,

mit langeweile hat das nichts zutun.
Bisher war es immer so das man immer 2Spalten einrückt. Es soll nur einigermassen einheitlich aussehen.
Ich will jetzt kein Mod angreifen, aber die anderen kümmern sich nciht besonders drum, Postings zu Formatieren. Deswegen habe ich da noch, wie soll ich sagen, freies Spiel. Keiner hat bis jetzt drüber gemeckert. Wenn andere nicht Fomatieren, an wenn soll ich mich denn richten? Deswegen mache ich es nach meinem Befinden. Das ich eigentlich nciht schlecht finde. Das kann man aber natürlich die User entscheiden lassen. Ob 1 oder 2 Spalten einrücken.

Ich mach mal ein Thread auf. Du kannst ja abstimmen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:30 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