Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.209 Beiträge
Delphi 12 Athens
|
AW: Daten aktualisieren sich nicht
4. Jul 2012, 23:33
Nur 24?
Ein ordentlicher Tag hat mindestens 48.
Delphi-Quellcode:
function getfile(server, username, password, localfile, remotefile: string; port: word = 21): HRESULT;
var
hopen, hconnect: HINTERNET;
begin
hopen := InternetOpen('myagent', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
if hopen <> 0 then begin
try
hconnect := InternetConnect(hopen, PChar(server), port, PChar(username), PChar(password), INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
if hconnect <> 0 then begin
try
if FtpGetFile(hconnect, pchar(localfile), pchar(remotefile), false, 0, FTP_TRANSFER_TYPE_UNKNOWN, 0) then
Result := NO_ERROR
else
Result := GetLastError;
finally
InternetCloseHandle(hconnect);
end;
end else
Result := GetLastError;
finally
InternetCloseHandle(hopen);
end;
end else
Result := GetLastError;
end;
// etwas gekürzt/zusammengefasst (man muß nur wissen was wie/wo/warum gemacht wurde, bzw. wie sich der Code verhält)
function getfile(server, username, password, localfile, remotefile: string; port: word = 21): HRESULT;
var
hopen, hconnect: HINTERNET;
begin
hconnect := 0;
hopen := InternetOpen('myagent', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
try
if hopen <> 0 then begin
hconnect := InternetConnect(hopen, PChar(server), port, PChar(username), PChar(password), INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
if (hconnect <> 0) and FtpGetFile(hconnect, pchar(localfile), pchar(remotefile), false, 0, FTP_TRANSFER_TYPE_UNKNOWN, 0) then
Result := NO_ERROR
else
Result := GetLastError;
end else
Result := GetLastError;
//hconnect := InternetConnect(hopen, PChar(server), port, PChar(username), PChar(password), INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
//if (hopen <> 0) and (hconnect <> 0) and FtpGetFile(hconnect, pchar(localfile), pchar(remotefile), false, 0, FTP_TRANSFER_TYPE_UNKNOWN, 0) then
// Result := NO_ERROR
//else
// Result := GetLastError; // ich weiß jetzt aber nicht ganz sicher, wie InternetConnect bei hopen=0 reagiert
finally
InternetCloseHandle(hconnect);
InternetCloseHandle(hopen);
end;
end;
E := getfile(...);
if E <> NO_ERROR then
RaiseLastOSError(E); // RaiseLastWin32Error(E); // ShowMessage('Problem: ' + SysErrorMessage(E));
Das sind im Prinzip alles Konstanten für erfolgreiche Verarbeitung, hängt halt davon ab, von wo die Fehler kommen, aber im Prinzip isses egal, was man nimmt ... 0 ist 0
Delphi-Quellcode:
S_OK = $00000000;
NOERROR = 0;
ERROR_SUCCESS = 0;
NO_ERROR = 0;
$2B or not $2B
Geändert von himitsu ( 4. Jul 2012 um 23:43 Uhr)
|