Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Verzeichnisse in Listbox auflisten (https://www.delphipraxis.net/21696-verzeichnisse-listbox-auflisten.html)

Lamy 6. Mai 2004 16:43


Verzeichnisse in Listbox auflisten
 
Hi!

Soo, habs jetzt so weit dass mein "Client" das Verzeichnis in einer Listview anzeigt - allerdings immernoch alles zusammen - Dateiname, Datum, Zugriffsrechte....


Wie kann ich diese ganzen Werte aus der Stringliste extrahieren um sie dann in "Colums" sortirt anzeigen zu können?

Danke schonmal!

Lamy

alcaeus 6. Mai 2004 16:46

Re: Verzeichnisse in Listbox auflisten
 
Wie hast du die Daten in der StringList vorliegen? Du musst die erstmal aufspalten, dann kannst du mit
Delphi-Quellcode:
  ListView1.Items[Index].SubItems.Add(<Detail>);
eine neue Spalte hinzufügen. Beachte dass du aber zuerst die Eigenschaft Columns der ListView entsprechend konfigurieren musst.

Lamy 6. Mai 2004 16:51

Re: Verzeichnisse in Listbox auflisten
 
Zitat:

Zitat von alcaeus
Wie hast du die Daten in der StringList vorliegen? Du musst die erstmal aufspalten, dann kannst du mit
Delphi-Quellcode:
  ListView1.Items[Index].SubItems.Add(<Detail>);
eine neue Spalte hinzufügen. Beachte dass du aber zuerst die Eigenschaft Columns der ListView entsprechend konfigurieren musst.


So wird die Stringliste "aufgeladen" und in die Listview übertragen:
Delphi-Quellcode:
    Form1.Listftpdir.Items.Clear; // Verzeichnisanzeige leeren
    IdFTP1.List(Stringliste);
    FOR i := 1 TO Stringliste.Count DO
      WITH Form1.Listftpdir.Items.Add DO
        Caption := Stringliste.Strings[i - 1];
Aber ich weiß beim besten Willen nicht wie die Dateien in der Stringliste vorliegen - wie kann ich das rausfinden und aufsplitten?

P.S.: immer die aktuellste Verion [wen's interessiert, s' gibt noch nicht viel was man machen kann^^]: http://www.a.toolsnfun.de/ftpclient/update.exe

alcaeus 6. Mai 2004 17:32

Re: Verzeichnisse in Listbox auflisten
 
Also, die Daten werden mit Leerzeichen getrennt. Speicher mal einen Entrag der Stringlist in eine Datei, dann kann ich ihn auch besser analysieren. Soviel zum ersten Thema. Zum zweiten, dein Programm. Ein FTP-Client ist ja ganz nett, aber erstens würde ich gern von der Update-Funktion ein Fenster sehen, welches mir anzeigt dass die Datei heruntergeladen wird. So weiß ich ob das Programm hängt oder was los ist. Zweitens, Bringe die Fenster in den Mittelpunkt des Geschehens, also des Bildschirms. Drittens, ich sehe keinen Grund, das Fenster für Verbindung herstellen und Einstellungen als bsSizeable einzustellen. Mach die beiden als bsDialog, so kann man die Größe nicht mehr ändern. Und last but definitely not least:
:warn: Ein Plaintext-Passwort in einer INI-Datei im Verzeichnis des Programms ist für mich ein Grund das Programm zu löschen und den Programmierer zu terminieren. Auch wenns nur eine Beta ist, aber nachdem du das Passwort in den Edits brav versteckst, kannst du es auch verschlüsselt in die INI geben. Also, ändere das bitte schnellstens! :warn:

Lamy 6. Mai 2004 17:43

Re: Verzeichnisse in Listbox auflisten
 
Zitat:

Zitat von alcaeus
Also, die Daten werden mit Leerzeichen getrennt. Speicher mal einen Entrag der Stringlist in eine Datei, dann kann ich ihn auch besser analysieren. Soviel zum ersten Thema. Zum zweiten, dein Programm. Ein FTP-Client ist ja ganz nett, aber erstens würde ich gern von der Update-Funktion ein Fenster sehen, welches mir anzeigt dass die Datei heruntergeladen wird. So weiß ich ob das Programm hängt oder was los ist. Zweitens, Bringe die Fenster in den Mittelpunkt des Geschehens, also des Bildschirms. Drittens, ich sehe keinen Grund, das Fenster für Verbindung herstellen und Einstellungen als bsSizeable einzustellen. Mach die beiden als bsDialog, so kann man die Größe nicht mehr ändern. Und last but definitely not least:
:warn: Ein Plaintext-Passwort in einer INI-Datei im Verzeichnis des Programms ist für mich ein Grund das Programm zu löschen und den Programmierer zu terminieren. Auch wenns nur eine Beta ist, aber nachdem du das Passwort in den Edits brav versteckst, kannst du es auch verschlüsselt in die INI geben. Also, ändere das bitte schnellstens! :warn:


1.: Wie kann ich das denn in ner Datei speichern? *keineahnunghat*
2.: Danke für die Kritik! Ich wollte eh noch fragen wie man das Resizen unterbinden kann :D aber wie kriege ichs in den Mittelpunkt des Bildschirms? :angle2: Zum Thema Passwort: Ich hatte sowiso noch vor das zu verschlüsseln und dann in der .ini zu speichern oder vielleicht in der Registry aber erstmal eins nach dem andern :stupid:...

Wie gesagt, vielen Dank für Kritik & Tips, aber lieber back2Topic sonst wird der Thread wieder geschlossen *angst*

Lamy

alcaeus 6. Mai 2004 17:52

Re: Verzeichnisse in Listbox auflisten
 
Ok, also, du kanst den String auch in ein Edit reinschreiben oder sonstwas, hauptsache du kannst eines der Elemente in der StringList mit Ctrl+C kopieren und dann hier posten. Mich interessiert ob das mit Tabs oder sowas gelöst wird. Bezüglich der Position: die Eigenschaft "Position" des Forms auf poMainFormCenter setzen, um das Form in der Mitte des Hauptformulars anzeigen zu lassen. Aber wieder zurück zum Topic. Setze einen Breakpoint in die Schleife, und werte mit Strg+F7 ein Feld der Stringlist aus. Dann kopierst du das Ergebnis und stellst es hier online, ich habe leider keine Zeit ein FTP-Programm zu schreiben um das herauszufinden. Aber sowas Ähnliches hats hier schon mal gegeben:
http://www.delphipraxis.net/internal...ighlight=idftp
Ganz wichtig sein könnte dieser Beitrag:
http://www.delphipraxis.net/internal...=161613#161613
Ich habs nicht probiert, also, viel Glück...

PS: Wegen dem Passwort: Na dann lieber mal nicht abspeichern als Plaintext, wirklich...

Lamy 6. Mai 2004 22:27

Re: Verzeichnisse in Listbox auflisten
 
Also, so hab ichs verstanden:

stringliste[0] wäre Zugriffsrechte 11 jaschu-mac4win homepages 4096 May 5 14:47 .

Jetzt suche ich die Trennzeichen mit pos [die Leerzeichen], und mit copy splitte ich mir dann den ersten block ab.

Aber wie ging das nu?
In der Delphihilfe habsch schon nachgeguckt, ist aber nicht aufschlussreich für mich...

DataCool 7. Mai 2004 00:39

Re: Verzeichnisse in Listbox auflisten
 
HI Lamy,

ich hab ne Funktion geschrieben, die einen TExt automatisch anhand eines Trennzeichen aufsplittet und das ERgebnis in eine STringList schreibt.

DAs sollte Dir weiter helfen :

Code:
// splittet einen bestehenden String anhand eines Trennzeichen in mehere Strings auf
Function VBSplit(Liste : TStringList; Text2Split : String; SeperatorStr : String) : Boolean;
Var Posi      : Longint;
      strTemp : String;
      strPart : String;
      bInLoop : Boolean;
      sepLen : Longint;
begin
   result := true;
   bInLoop := false;
   try
      //Liste leeren
      Liste.clear;
      strTemp  := Text2Split;
      sepLen   := Length(SeperatorStr);
      Posi     := Pos(SeperatorStr,strTemp);
      While Posi > 0 do begin
         bInLoop := true;
         strPart := Copy(strTemp,1,Posi-1);
         Liste.Add(strPart);
         strTemp := copy(strTemp,Posi+sepLen,Length(strTemp)-(Posi+sepLen-1));
         Posi   := Pos(SeperatorStr,strTemp);
      end;
      if (bInLoop) or (Length(strTemp)>0) then
         Liste.add(strTemp);
   except
      Result := false;
   end;
end;
GRuß Data

SirThornberry 7. Mai 2004 07:25

Re: Verzeichnisse in Listbox auflisten
 
@DataCool: Nix gegen dich persönlich aber deine Funktion ist ziemlich unperformant da du mit copy ständig nen riesen string neu zusammensetzt... Von der Performance her sollte folgende Procedure um einiges besser sein..
Delphi-Quellcode:
procedure splitString(const Source: String; const Delimiter: String; var Dest: TStringlist);
var count: Integer;
    LStartpos, LEndepos, LSourcelength: Integer;
begin
 Dest.Clear;
 count := 1;
 LStartpos := 0;
 LEndepos := 0;
 LSourcelength := length(Source);
 while count <= LSourcelength do
 begin
  if copy(Source, count, length(Delimiter)) = Delimiter then
  begin
   LEndepos := count;
   dest.Add(copy(Source, LStartpos + 1, LEndepos - LStartpos - 1));
   LStartpos := count + length(Delimiter) - 1;
   count := count + length(Delimiter);
  end else begin
   count := count + 1;
  end;
 end;
 if LEndePos <> Count - length(Delimiter) then
    dest.Add(copy(Source, LStartpos + 1, count - LStartpos - 1));
end;

Hab eben noch nen kleinen Test durchgeführt. Meine Funktion brauchte für einen kleinen String von 10 MB (jedes vierte zeichen ein Delimiter) zwischen 7 und 8 Sekunden. Die Funktion von Datacool wurde jedesmal nach ca 13 Sekunden mit dem Fehler "Out of Memory" beendet. Keine Ahnung wann bei meiner Funktion so eine Meldung kommmt. Den größten String den ich bisher damit zerlegt hab war ein etwa 50 MB großer String (Datenbank-Tabellen-Abbild)

DP-Maintenance 7. Mai 2004 07:28

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Internet / IP / LAN" nach "VCL-Komponenten und Controls" verschoben.
Irgendwie fehlt mir der Bezug zu LAN ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 Uhr.
Seite 1 von 5  1 23     Letzte »    

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