Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdFTP Dateien auflisten mit Zusatzinfos? (https://www.delphipraxis.net/153961-idftp-dateien-auflisten-mit-zusatzinfos.html)

himitsu 26. Aug 2010 13:14

AW: IdFTP Dateien auflisten mit Zusatzinfos?
 
Zitat:

Zitat von Jamah (Beitrag 1045214)
Hm. Ich bekomm da wieder einen Error. Warum??

Mit 'ner Architect in der Tasche hätt ich etwas mehr Ahnung erwartet. :shock:

Lösung: Du mußt die nötige Unit mit einbinden.

Tipp: (für D2009/D2010 ... geht auch schon früher, nur dann ein bissl anders)
- Strg+Shift+F
- Dateifilter "*.pas;*.inc"
- Verzeichnisse z.B. "C:\Programme\Embarcadero\RAD Studio\7.0"
- "Unterverzeichnisse durchsuchen" auf Ja
- und nun einfach mal nach "TIdFTPListItem" suchen
(die Punkte 2-4 merkt sich Delphi)

schöni 3. Sep 2010 19:58

AW: IdFTP Dateien auflisten mit Zusatzinfos?
 
Zitat:

Zitat von jfheins (Beitrag 1044945)
Zitat:

Zitat von Jamah (Beitrag 1044916)
Woher kommt das GetFileInfo(), was du da benutzt? Ich hab einiges dazu gefunden, ist aber meißtens eine funktion zum Auslesen des Herstellers...

Das ist eine eigene Funktion, die dann auch das Icon ausliest und so. Solltest du ohne Probleme Weglassen können. (Dann halt direkt auf TIdFTP.DirectoryListing zugreifen)

Also den Code so ändern:
Delphi-Quellcode:
procedure TFtpBrowser.CreateDirectoryListing;
var
  i: Integer;
begin
    FFtp.SendCmd('TYPE A');

    FFtp.List (nil, '-a', True);

    for i := 0 to Pred (FFtp.ListResult.Count) do
      CreateItemFromFileInfo (FTP.DirectoryListing[i]);
end;

procedure TFtpBrowser.CreateItemFromFileInfo(const FileInfo: TIdFTPListItem);
var
  ListItem: TListItem;
begin
  // Mach was mit FileInfo
end;

Trotzdem hier noch der Code (bitte nicht schlagen^^)
Delphi-Quellcode:
type
 TFileInfo = record
    Directory: Boolean;
    Filename,
    Date,
    FileType: String;
    Size: Integer;
  end;

-------------------

function TFtpBrowser.GetFileInfo(Index: Integer): TFileInfo;
var
  Registry: TRegistry;
  Filename, Filedetails, TempType, TempSize: String;
begin
  Filename := FFtp.DirectoryListing[Index].FileName;
  Filedetails := FFtp.DirectoryListing[Index].Text;

  Result.Directory := Filedetails[1] = 'd';
  Result.Filename := Filename;

  if Result.Directory then
    Result.FileType := 'Ordner'
  else
  begin
    Result.FileType := ReverseString (copy (ReverseString (Filename), 1, pos ('.', ReverseString (Filename))));

    Registry := TRegistry.Create(KEY_READ);
    try
      Registry.RootKey := HKEY_CLASSES_ROOT;
      if Registry.OpenKey (Result.FileType, False) then
      begin
        TempType := Registry.ReadString('');
        Registry.CloseKey;
        if Registry.OpenKey (TempType, False) then
        begin
          TempType := Registry.ReadString('');
        end;
      end;
    finally
      Registry.Free;
    end;

    if (TempType = '') then
      Result.FileType := Trim (AnsiUpperCase (copy (Result.FileType, 2, length (Result.FileType) - 1)) + ' Datei')
    else
      Result.FileType := TempType;
  end;

  Filedetails := ReverseString(Filedetails);
  Delete (Filedetails, 1, length (Filename));

  Result.Date := ReverseString (Trim (copy (Filedetails, 1, 14)));

  try
    TempSize := Trim (copy (Filedetails, 14, 10)) + ' ';
    TempSize := Trim (copy (TempSize, 1, pos (' ', TempSize)));
    Result.Size := StrToInt (ReverseString (TempSize));
  except
    Result.Size := 0;
  end;
end;

Welche Aufgabe haben die Registryzugriffe in GetFileInfo im Zusammenhang mit FTP Zugang?

jfheins 3. Sep 2010 20:11

AW: IdFTP Dateien auflisten mit Zusatzinfos?
 
Zitat:

Zitat von schöni (Beitrag 1047376)
Welche Aufgabe haben die Registryzugriffe in GetFileInfo im Zusammenhang mit FTP Zugang?

Das sorgt dafür, dass z.B. bei einer .bat Datei da steht "Windows Batch File" ;)

himitsu 3. Sep 2010 20:13

AW: IdFTP Dateien auflisten mit Zusatzinfos?
 
Das sucht aus der Registry, anhand der Dateiendung, die Beschreibung raus.
= das, welches im Exlorer in der Spalte "Typ" steht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz