Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
|
AW: IdFTP Dateien auflisten mit Zusatzinfos?
25. Aug 2010, 17:16
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;
|
|
Zitat
|