AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Daten aktualisieren sich nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Daten aktualisieren sich nicht

Ein Thema von Curry · begonnen am 4. Jul 2012 · letzter Beitrag vom 5. Jul 2012
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

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

AW: Daten aktualisieren sich nicht

  Alt 4. Jul 2012, 21:00
Und du meinst jetzt, daß es niemanden interessieren würde, wie/warum es nun geht, wenn irgendwann nochmal jemand soein Problem hat?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Curry

Registriert seit: 7. Dez 2010
12 Beiträge
 
#12

AW: Daten aktualisieren sich nicht

  Alt 4. Jul 2012, 21:56
Ich habe den Lösungsvorschlag von NickelM genommen und fmCreate durch 0 ersetzt.

Delphi-Quellcode:
function getfile(server, username, password, localfile, remotefile: string; port: word = 21): boolean;
var
  hopen, hconnect: HINTERNET;
begin
  hopen := InternetOpen('myagent', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
  try
    hconnect := InternetConnect(hopen, pchar(server), port, pchar(username), pchar(password), INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
    try
      Result := FtpGetFile(hconnect, pchar(localfile), pchar(remotefile), false, 0, FTP_TRANSFER_TYPE_UNKNOWN or INTERNET_FLAG_RELOAD, 0);
    finally
      InternetCloseHandle(hconnect);
    end;
  finally
    InternetCloseHandle(hopen);
  end;
end;
Deine Lösung gab bei
if hopen = 0 then und
if hconnect = 0 then begin einen Fehler zurück. (aber vllt hab ich auch etwas vergessen zu berücksichtigen).
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Daten aktualisieren sich nicht

  Alt 4. Jul 2012, 22:11
"Ausführliche" Fehlerbeschreibungen find ich immer sehr gut ... denn da erkennt man eventuell direkt, warum was nicht geht.

Ich nahm einfach an HINTERNET wäre ein THandle/DWORD, so wie es viele Handles ala HWND oder HRESULT sind.
Wie dir bestimmt die Fehlermeldung gesagt hat, paßt 0 und Pointer nicht zusammen, also verwendet mal ganz einfach nil statt 0.
Nja, im MSDN steht was von NULL, was bei Delphi-Pointern eben das nil ist, allerdings werden Header leider nicht immer korrekt übersetzt ... drum ist einfsch der Erfahrungswert, statt dem Gelesenem in den Code eingeflossen.
Ich kann dir bei sowas auch immer das MSDN (online) oder Windows PSDK (Plattform SDK zum downloaden) empfehlen, wo man alles zu Windows-APIs wie MSDN-Library durchsuchenInternetOpen nachlesen kann, wobei vorallem die Beschreibungen der Parameter und vorallem des Results und der Fehlerbehandlung besonders interessant sind.


PS: Man kann statt der Exceptions auch einfach das jeweils letzte GetLastError als HRESULT zurückgeben und im Erfolgsfall dann NO_ERROR, also statt des nichtssagenden Boolean.
So oder so hat man dann immernoch einen auswertbaren Rückgabewert, den man zur Fehleranalyse nutzen kann, um rauszufinden warum was nicht geht. (aber Exceptions sind auch eine Nette Angelegenheit)
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:19 Uhr)
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#14

AW: Daten aktualisieren sich nicht

  Alt 4. Jul 2012, 22:23
@himitsu : Denkste wie ich mich mit diesen Funktionen beschäftigt habe, woher ich meine Kenntnisse größsten Teils habe...von der Quelle direkt. Ein bischen googlen und schon findet man was man sucht. Einfach mal eine WinAPI gegoogled und siehe da MSDN Seite. In Englisch aber super beschrieben. Wenn man dann auch noch weis, wie man die C++ Paramter in Delphi umsetzt, kann man jede belibige Funktion importieren und benutzen.
Naja es gibt so viele Funktionen, natürlich kann man sich nicht alle Paramter, Flags usw. merken.
Wenn ich WinAPI schreibe "spicke" ich auch öfters mal bei MSDN, was nochmal wo hingehört.

Aber damit sich manche diese MSDN, die für "Laien" nicht gerade einfach zuverstehen ist, anschauen müssen gibts ja uns Delphilaner, die mal schnell nachgugen und hilfsbereit sind

Gruß NickelM
P.S. : Ich geh jetzt Pennen Bin zeit 24h wach hallo?
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Daten aktualisieren sich nicht

  Alt 5. Jul 2012, 07:19
0 ist aber nicht nil, hast Du ja selbst gesagt.
Delphi-Quellcode:
hopen := InternetOpen(...);
if Assigned(hopen) then
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz