Hi Leute,
der Fehler kommt wohl davon, dass FtpGetCurrentDirecory immer MAX_PATH Zeichen zurürckgibt und dass das die Größe von szBuffer überschreitet. Deshalb habe ich den Code so abgeändert:
Code:
procedure GetCurDir(
handle: Cardinal);
const
LEN_CUR_DIR = 23; // Length('aktuelles Verzeichnis: ')
var
szBuffer: array[0..MAX_PATH - 1 + LEN_CUR_DIR] of Char;
szDir: PChar;
lenDir: DWORD;
begin
lenDir := MAX_PATH;
GetMem(szDir, lenDir);
FTPGetCurrentDirectory(hFTPSession, szDir, lenDir);
// MessageBox(0, szDir, 'GetCurDir', 64);
lstrcpy(szBuffer, 'aktuelles Verzeichnis: ');
lstrcat(szBuffer, szDir);
SendMessage(GetDlgItem(
handle, IDC_LSTMSG), LB_ADDSTRING, 0, Integer(@szBuffer));
FreeMem(szDir);
end;
Jetzt aber ist szDir = ''. Nur wenn man vorher im Debug-Modus sich szDir ansieht, oder die MessageBox oben einbaut, dann erhlält man zwar zuerst szDir='', aber dann einen Befehl später den Verzeichnisort...
MfG,
d3g