Autor |
Beitrag |
Robii
      
Beiträge: 236
|
Verfasst: Di 30.03.10 23:00
Guten Abend,
ich erzeuge mit dem ConsolenKommando Tree eine *.TXT-Datei in der ich einen Tree der gewünschten Festplatte habe. Wie kann ich diese jetzt in einen TTreeView importieren? Ich muss den Schritt mit dem zwischenspeichern machen, auch wenn es überflüssig klingt.
Danke für die Hilfe schonmal im Vorraus,
Lieben Gruß,
Robii.
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Di 30.03.10 23:10
Da Du das doch schon in Delph machst siehe Dein "TREE-Befehl CMD.Exe" hast Du doch auch den Pfad oder das Lw.
Gruss ALf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 30.03.10 23:14
Warum nicht FindFirst und FindNext?
|
|
Robii 
      
Beiträge: 236
|
Verfasst: Di 30.03.10 23:16
ALF hat folgendes geschrieben : | Da Du das doch schon in Delph machst siehe Dein "TREE-Befehl CMD.Exe" hast Du doch auch den Pfad oder das Lw.
Gruss ALf |
Welchen Pfad meinst du und was soll ich damit machen? Lw?
FindFirst und FindNext? Wie soll ich das damit machen?
Wenn ich mir das *.txt so angucke sind da extrem viele Sonderzeichen drin hier mal ein Ausschnitt:
Zitat: |
C:\
ÃÄÄÄ2947156df0de6c3523b9
³ ÃÄÄÄar-sa
³ ÃÄÄÄbg-bg
³ ÃÄÄÄcs-cz
³ ÃÄÄÄda-dk
³ ÃÄÄÄde-de
³ ÃÄÄÄel-gr
³ ÃÄÄÄen-us
³ ÃÄÄÄes-es
³ ÃÄÄÄet-ee
³ ÃÄÄÄeula
³ ³ ÃÄÄÄar-sa
³ ³ ÃÄÄÄbg-bg
³ ³ ÃÄÄÄcs-cz
³ ³ ÃÄÄÄda-dk
³ ³ ÃÄÄÄde-de
³ ³ ÃÄÄÄel-gr
³ ³ ÃÄÄÄen-us
³ ³ ÃÄÄÄes-es
³ ³ ÃÄÄÄet-ee
|
Irgendwie erscheint mir das ein bisschen seltsam.
Grüße
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 30.03.10 23:27
Moin!
Robii hat folgendes geschrieben : | FindFirst und FindNext? Wie soll ich das damit machen? |
Die Tree.exe-Ausgabe kriegst du damit natürlich nicht geladen, das bezieht sich darauf, warum du mit einem Kommandozeilen-Tool die Daten liest, statt direkt auf das Dateisystem zuzugreifen.
Robii hat folgendes geschrieben : | Wenn ich mir das *.txt so angucke sind da extrem viele Sonderzeichen drin |
Das liegt daran, dass du die Ausgabe an der Kommandozeile OEM-kodiert bekommst, aber als ANSI-Zeichen interpretierst. Wenn du das von OEM nach ANSI konvertiert hast, sieht das so aus:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| C:\ +---2947156df0de6c3523b9 ¦ +---ar-sa ¦ +---bg-bg ¦ +---cs-cz ¦ +---da-dk ¦ +---de-de ¦ +---el-gr ¦ +---en-us ¦ +---es-es ¦ +---et-ee ¦ +---eula ¦ ¦ +---ar-sa ¦ ¦ +---bg-bg ¦ ¦ +---cs-cz ¦ ¦ +---da-dk ¦ ¦ +---de-de ¦ ¦ +---el-gr ¦ ¦ +---en-us ¦ ¦ +---es-es ¦ ¦ +---et-ee | cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Di 30.03.10 23:29
Robii hat folgendes geschrieben : |
Welchen Pfad meinst du und was soll ich damit machen? Lw? |
Wenn es um die VerzeichnisStruktur geht nimmts Du eine Shelltreeview dafür,
und dann Shelltreeview1.root := und das laufwerk oder das Verzeichniss was Du bei Dir
Delphi-Quelltext 1:
| wStr := '/C tree C:\ > '+GetCurrentDir+'\tree.txt'; | ausgesucht hast.
Wenn es darum geht!?
Gruss ALf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Robii 
      
Beiträge: 236
|
Verfasst: Di 30.03.10 23:33
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 30.03.10 23:37
Moin!
Robii hat folgendes geschrieben : | Irgendwie hilft mir das jetzt auch noch nicht so weiter, wie konvertiere ich das denn im Programm ? |
Ich habe dir bereits einen Link zu einem passenden Beitrag in der Lib gegeben, die Unit hat auch eine OEM-Konvertierung an Bord. Einfach benutzen, fertig.
Robii hat folgendes geschrieben : | Und hat jemand evtl. einen Link für ein gutes TTreeView-Tutorial? Ich finde einfach keins bei Google. |
Was genau gibt´s denn da nicht zu verstehen?  Ausserdem gibt´s hier im Forum Code-Beispiele ohne Ende... TTREEVIEW
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 31.03.10 00:32
Robii hat folgendes geschrieben : | Und hat jemand evtl. einen Link für ein gutes TTreeView-Tutorial? |
Du machst es dir nur so kompliziert, weil du so alles korrekt in die Baumstruktur einklinken musst statt die paar Zeilen zu schreiben es richtig umzusetzen ohne die komische Textdatei.
Grundsätzlich musst du eben immer neue Knoten hinzufügen, wo genau ist denn dabei das Problem?
Und ich habe ja bereits auf die Library hingewiesen, da gibt es auch interessante Beispiele. Und da du offenbar zu faul bist einmal nachzuschauen poste ich den Link doch. Eigentlich dachte ich die paar Klicks würdest du schaffen...
www.delphi-library.d...w+anzeigen_2420.html
|
|
Robii 
      
Beiträge: 236
|
Verfasst: Mi 31.03.10 00:37
jaenicke hat folgendes geschrieben : | Robii hat folgendes geschrieben : | Und hat jemand evtl. einen Link für ein gutes TTreeView-Tutorial? | Du machst es dir nur so kompliziert, weil du so alles korrekt in die Baumstruktur einklinken musst statt die paar Zeilen zu schreiben es richtig umzusetzen ohne die komische Textdatei.
Grundsätzlich musst du eben immer neue Knoten hinzufügen, wo genau ist denn dabei das Problem?
Und ich habe ja bereits auf die Library hingewiesen, da gibt es auch interessante Beispiele. Und da du offenbar zu faul bist einmal nachzuschauen poste ich den Link doch. Eigentlich dachte ich die paar Klicks würdest du schaffen...
www.delphi-library.d...w+anzeigen_2420.html |
Den Link hatte ich schon gefunden, allerdings habe ich grade nach alten Code-Schnipseln gesucht in denen ich schoneinmal das gemacht hatte was ich machen möchte. Der Code oben ist natürlich auch treffend, ich denke den werde ich verwenden, allerdings habe ich noch eine Frage (an Narses).
Mit der Procedure fülle ich ja einen TTreeView. Wenn ich diesen TTreeView im Clienten jetzt gefüllt habe, wie kann ich diesen dann zum Server 'transportieren' ? In einen Stream laden (wenn das geht) und dann verschicken?
Danke für die Hilfe [von dir Jaenicke],
Lieben Gruß,
robii.
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 31.03.10 00:39
Moin!
Robii hat folgendes geschrieben : | allerdings habe ich noch eine Frage (an Narses).
Mit der Procedure fülle ich ja einen TTreeView. Wenn ich diesen TTreeView im Clienten jetzt gefüllt habe, wie kann ich diesen dann zum Server 'transportieren' ? In einen Stream laden (wenn das geht) und dann verschicken? |
Wozu? Schick doch direkt die Textdatei zum Server, fertig.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Robii 
      
Beiträge: 236
|
Verfasst: Mi 31.03.10 00:43
Narses hat folgendes geschrieben : | Wozu? Schick doch direkt die Textdatei zum Server, fertig.  |
Irgendwie habe ich das Gefühle da ist Ironie im Beitrag.
Oder meinst du das ernst und den TreeView in eine txt speichern und dann verschicken?
Lieben Gruß,
robii.
Moderiert von Narses: Zitat gekürzt.
--- Moderiert von Narses: Beiträge zusammengefasst---
Client:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.tree(Drive: String); var SStream: TStringStream; begin SStream := TStringStream.Create; FindFilesTree (TreeView,Drive,nil,True); TreeView.SaveToStream(SStream); Client.Socket.SendText(Syntax[cmdITRE].Text+#13+MaskTermChar(SStream.DataString)+#13); end; |
Server:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.TreeEmpfangen; var sStream: TStringStream; i: Integer; begin sStream := TStringStream.Create(UnMaskTermChar(Data.Strings[1])); Tree.LoadFromStream(sStream); sStream.Free; for i := 0 to Syntax[cmdITRE].ArgCount - 1 do Data.Delete(0); end; |
So hab ich es jetzt gemacht.
Einziges Problem ist jetzt noch das mit dem Auswählen von Dateien im TreeView, dazu ist ja auch ein Beispiel im Link gegeben :
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| Procedure TForm1.TreeView1Click(Sender: TObject); Var Info: pNodeInfo; Begin If TreeView1.Selected <> nil then Begin Info := TreeView1.Selected.Data;
Label1.Caption := Info^.Name If Not Info^.Path Then Memo1.Lines.LoadFromFile(Info^.Name); End Else Label1.Caption := 'Kein Verzeichnis/Datei gewählt'; End; |
Allerdings verursacht mein Code :
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.TreeClick(Sender: TObject); var Info: pNodeInfo; Name: String; begin If Tree.Selected <> nil Then Begin Info := Tree.Selected.Data; Name := Info^.Name; ShowMessage(Name); End; end; |
immer einen Zugriffsfehler. Wieso das? Gucke selbst Morgen nochmal drüber, gehe jetzt aber erstmal schlafen. :p
Guten Nacht,
Lieben Gruß,
robii.
Zuletzt bearbeitet von Robii am Mi 31.03.10 01:15, insgesamt 1-mal bearbeitet
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 31.03.10 01:14
Moin!
Robii hat folgendes geschrieben : | Oder meinst du das ernst und den TreeView in eine txt speichern und dann verschicken? |
Klar hab ich das ernst gemeint, aber nicht den TreeView-Inhalt, sondern die Textdatei, die du per Tree.exe erzeugt hast (vorher noch durch einen Zlib-Compression-Stream schubsen, dann ist´s auch nicht so groß).
Wenn du schon sinnlose Dinge tust (wie Tree.exe an der Kommandozeile für einen Verzeichnisbaum zu nutzen), dann auch gleich richtig.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 31.03.10 08:06
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Mi 31.03.10 11:40
Robii hat folgendes geschrieben : | Allerdings verursacht mein Code :
.......
immer einen Zugriffsfehler.
|
Beziehst Du das auf dem Server oder Clienten
Gruss ALf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Robii 
      
Beiträge: 236
|
Verfasst: Mi 31.03.10 14:46
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Mi 31.03.10 22:29
Robii hat folgendes geschrieben : | Einziges Problem ist jetzt noch das mit dem Auswählen von Dateien im TreeView, .....
|
Ich will ja nicht unken und hoffe ich irre mich
Aber ein Dateiverzeichnis vom Clienten, in ein Treeview auf nem Server zu Kopieren und dann noch die Dateien/Verzeichnisse vom Clienten über dieses Treeview auslesen zu wollen???? mhhh
Gruss ALf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|