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
Curry

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

AW: Daten aktualisieren sich nicht

  Alt 4. Jul 2012, 19:24
Danke für deine Antwort.

Sowohl auf meinem Rechner wie auch auf denen meiner Freunde wird das File nun einmal am Anfang geladen. Danach wird "ergebnis" false.

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);
  hconnect := InternetConnect(hopen, pchar(server), port, pchar(username), pchar(password), INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
  Result := FtpGetFile(hconnect, pchar(localfile), pchar(remotefile), false, fmCreate, FTP_TRANSFER_TYPE_UNKNOWN or INTERNET_FLAG_RELOAD, 0);
  InternetCloseHandle(hconnect);
end;
EDIT: Ich hab den delay auf 3000 gesetzt ohne Veränderung.
Ja - im except fehlt noch ein exit.

Geändert von Curry ( 4. Jul 2012 um 19:32 Uhr)
  Mit Zitat antworten Zitat
NickelM

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

AW: Daten aktualisieren sich nicht

  Alt 4. Jul 2012, 19:33
EDIT: Ach und mach mal bei deiner getFile Funktion immer try...finally rein. Die anderen Handles musst du auch mit InternetCloseHandle beenden.
Verweise nochmal darauf, da ich dass nachdräglich gemacht habe.
Die WinInet-API für FTP ist so konzipiert das du nur eine Datei Pro Seesion downloaden oder hochladen kannst. Deshalb auch der try...finally Block für jeden HINTERNET Handle den du hast.

Ändere mach das so ab:

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, fmCreate, FTP_TRANSFER_TYPE_UNKNOWN or INTERNET_FLAG_RELOAD, 0);
    finally
      InternetCloseHandle(hconnect);
    end;
  finally
    InternetCloseHandle(hopen);
  end;
end;
Und @Dalai: Eigentlich brauch er gar kein Delay, da FTPGetFile erst zurückgibt in diesem Fall, wenn er die Datei hat oder wenn es fehlschlägt.

Gruß NickelM
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#3

AW: Daten aktualisieren sich nicht

  Alt 4. Jul 2012, 19:42
Ja - im except fehlt noch ein exit.
OK, aber selbst dann ist die Methode LoadFromFile nach dem try-Block überflüssig, denn warum muss er es im Erfolgsfall doppelt hintereinander machen?

Zitat von NickelM:
Und @Dalai: Eigentlich brauch er gar kein Delay, da FTPGetFile erst zurückgibt in diesem Fall, wenn er die Datei hat oder wenn es fehlschlägt.
Stümmt, jetzt wo du's sagst. Ich war bei Timern, aber das is ja gar keiner.

MfG Dalai

Geändert von Dalai ( 4. Jul 2012 um 22:11 Uhr) Grund: Typo
  Mit Zitat antworten Zitat
Curry

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

AW: Daten aktualisieren sich nicht

  Alt 4. Jul 2012, 19:53
Vielen Dank an alle schonmal

mache mich gleich ans ausprobieren. Vorher aber eine zwischenfrage:

Seit NickelM's FtpGetFile Ansatz ist die tracer.rax nicht mehr im Explorer sichtbar.
Trotzdem scheint sie noch zu existieren, da ich die Fehlermeldung "existiert bereits und ist schreibgeschützt" erhalte wenn ich maneull eine neue erstellen will.
  Mit Zitat antworten Zitat
NickelM

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

AW: Daten aktualisieren sich nicht

  Alt 4. Jul 2012, 20:01
Oh ehm ja...Mein Fehler sorry...ersetzt fmCreate wieder durch 0.
In der Doku stand File_Atributes von CreateFile und ich dachte Flags : oops:
Sorry mein Fehler...bin auch nur ein Mensch.

Gruß NickelM
P.S. : Sorry das passiert, wenn man sowas zwischendurch liest und nicht GENAU liest.
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat
Curry

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

AW: Daten aktualisieren sich nicht

  Alt 4. Jul 2012, 20:49
Vielen Dank nochmal an alle.

Es läuft jetzt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

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?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Curry

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

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
Online

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

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)
Ein Therapeut entspricht 1024 Gigapeut.

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


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 11:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz