Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#15

AW: Daten aktualisieren sich nicht

  Alt 4. Jul 2012, 22: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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 4. Jul 2012 um 22:43 Uhr)
  Mit Zitat antworten Zitat