Verbindungsprobleme FTP von Phil Ide [ERLEDIGT]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
RUzZlacK
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Do, 31. Mär 2016 11:32
Wohnort: Pforzheim

Verbindungsprobleme FTP von Phil Ide [ERLEDIGT]

Beitrag von RUzZlacK »

Servus,

habe ein Problem eine ganz normale Verbindung mit dem FTP Server herzustellen. Benutze den FTP von Phil Ide.

Ich übergebe ganz normal die Parameter und mache den open(). Aber da scheitert es schon. Muss ich irgendwas bestimmtes beachten? Mach ich da irgendwas falsch oder wie macht ihr es?

Code: Alles auswählen

oFtp := XbFTP():new( cServer, cUserId, cPassword ) 

IF oFtp:open() 
    msgbox("Connect")
ELSE
    //jedesmal hier
    msgbox("Error")
ENDIF
Eine Verbindung und eine Datei hochzuladen mit dem FTP von der ASINET.lib funktioniert, also an den Eingabedaten kann es nicht liegen.

Für jede Hilfe dankbar.

Grüße Alex.
Zuletzt geändert von RUzZlacK am Do, 12. Mai 2016 11:19, insgesamt 1-mal geändert.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von georg »

Hallo, Alex -


da ich die Lib gerade nicht vorliegen habe: gibt es eine Error-Message Funktion oder Instanzvariable, aus der Du mehr entnehmen kannst?

Da die Lib im Quelltext vorliegt, würde ich im Zweifel die Lib neu erstellen (mit Debugging-Information) und mal sehen, was bei der Anweisung passiert.

Aber vielleicht hat einer der anderen ja schon mal mit diesem Fehler zu tun gehabt.

Auch ein Problem ist oft die Firewall, aber wenn auf dem gleichen Server ein Xbase++-Programm mit AsiNET auf den gleichen Server zugreifen kann, dann würde ich die Firewall ausschliessen.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von brandelh »

fehlt da nicht ein create ?
Gruß
Hubert
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von Bertram Hansen »

Ne Hubert, ein Create() wird nicht benötigt. Ich habe auch die Funktion von Phil verwendet.

Aber Phil hat den Quellcode "XbFTP.PRG" dabei getan. Einfach mal debuggen. Es kann auch an der Verschlüsselung liegen.

FTP Alternative zu Phil gibt es unter:
https://moveitsupport.ipswitch.com/SUPP ... freely.htm
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
RUzZlacK
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Do, 31. Mär 2016 11:32
Wohnort: Pforzheim

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von RUzZlacK »

Laut dem Debugger liegt es hier dran:

Code: Alles auswählen

METHOD XbFTP:Open()
   STATIC cTpl
   local nHnd
   local lRet := FALSE

   if cTpl == NIL
      cTpl := DllprepareCall("wininet.dll",DLL_STDCALL,"InternetConnectA")
   endif

   if ::iOpen()
      //nHnd := DllExecuteCall( cTpl, ::connHandle, ::address, ::port, ::userId, ::password, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0 )
      nHnd := DllExecuteCall( cTpl, ::connHandle, ::address, ::port, ::userId, ::password, INTERNET_SERVICE_FTP, 0, 0 )

      if nHnd <> 0
         ::ftpHandle := nHnd
         lRet := TRUE
      else
         ::error := XBFTP_ERR_FTPCONN_FAIL
      endif
   endif
   return lRet



METHOD XbFTP:iOpen()
   STATIC cTpl
   local cUserAgent := "XbFTP"
   local nProxyMode
   local nHnd
   local lRet := FALSE

   if cTpl == NIL
      cTpl := DllprepareCall("wininet.dll",DLL_STDCALL,"InternetOpenA")
   endif


  nProxyMode := 1+iif(Empty(::proxy),2,0)
   nHnd := DllExecuteCall( cTpl, cUserAgent, nProxyMode, ::proxy, "", 1 ) //hier nHnd := 0
   if nHnd <> 0
      ::connHandle := nHnd
      lRet := TRUE
   else
      ::error := XBFTP_ERR_ICONN_FAIL
   endif
   return lRet

Bei nHnD kommt eine null zurück und damit gehts also nicht weiter.
Wieso da jetzt ne null kommt weiß ich nicht, kanns mir nicht erklären. Jemand Ideen? Ansonsten muss ich wohl auf Alternativen zurückgreifen und hoffen das es damit geht.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von georg »

Die WiniNet.dll wird nicht gefunden, vielleicht schreibst Du uns mal, welche Windows-Version Du verwendest? Theoretisch sollte sie sich in c:\windows\system32 befinden (32bit Windows).
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
RUzZlacK
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Do, 31. Mär 2016 11:32
Wohnort: Pforzheim

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von RUzZlacK »

georg hat geschrieben:Die WiniNet.dll wird nicht gefunden, vielleicht schreibst Du uns mal, welche Windows-Version Du verwendest? Ich habe da so was im Kopf, dass beim Umstieg auf Windows 7 die WiniNet.dll durch eine andere ersetzt worden ist.
Jup Windows 7 Professional.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von georg »

Siehe meine Korrektur, WinInet.dll ist immer noch (war wohl eine andere DLL, an die ich dachte).

Ist die Datei bei Dir vorhanden?
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
RUzZlacK
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Do, 31. Mär 2016 11:32
Wohnort: Pforzheim

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von RUzZlacK »

georg hat geschrieben:Siehe meine Korrektur, WinInet.dll ist immer noch (war wohl eine andere DLL, an die ich dachte).

Ist die Datei bei Dir vorhanden?
Ja wininet.dll ist vorhanden unter C:\Windows\System32. Du sagst aber 32bit, habe aber 64 kann irgendwas daran liegen?
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von georg »

Nein, das sollte passen (Du würdest einen anderen Fehler bekommen).

Ich gehe mal davon aus, dass die DLL korrekt geladen werden kann.

Code: Alles auswählen

      //nHnd := DllExecuteCall( cTpl, ::connHandle, ::address, ::port, ::userId, ::password, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0 )
      nHnd := DllExecuteCall( cTpl, ::connHandle, ::address, ::port, ::userId, ::password, INTERNET_SERVICE_FTP, 0, 0 )
Gibt es einen Grund, warum Du INTERNET_FLAG_PASSIVE durch 0 ersetzt hast?
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
RUzZlacK
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Do, 31. Mär 2016 11:32
Wohnort: Pforzheim

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von RUzZlacK »

Ersetzt? Ich hab nichts ersetzt, einfach so gedownloadet...
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von georg »

Hallo,


man sieht im Quelltext, dass das PASSIVE rausgenommen wurde. Da mir die Quellen nicht vorliegen, habe ich vermutet, dass Du das gemacht hast.

Aktiviere doch mal die auskommentierte Zeile und probiere es damit noch einmal.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von brandelh »

Hast du für die EXE eine Ausnahme in der Windows Firewall erstellt ("Zugriff auf ... 25 ... für xyz.EXE erlauben ?")

PS: warum nimmst du nicht Asinet wenn das geht ?
Gruß
Hubert
RUzZlacK
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Do, 31. Mär 2016 11:32
Wohnort: Pforzheim

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von RUzZlacK »

Klappt leider mit dem anderem nHnd auch nicht. Firewall dürfte auch keine probleme sein, die .exe hat eine Ausnahme.

Asinet deswegen nicht, weil ich nicht weiß wie ich dort Pfade erstellen kann oder auch andere Dateien außer .txt oder. xml Datein hochladen kann. Allgemein bei ASINET hab ich keine Hilfe bzw. weiß ich nicht wo was nachlesen kan, bei dem von Phil Ide wirds schon klarer.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von brandelh »

Ich selbst nutze die FTP Klasse von Marshallsoft, weil ich Verzeichnisse durchsuchen muss.

http://www.marshallsoft.com/ftp-client-library.htm
Gruß
Hubert
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von georg »

Es gibt eine Hilfedatei zur Asinet, die sich im Book-Verzeichnis befindet: asinet.hlp

Und zu Firewall-Regeln: da bin ich vor ein paar Tagen noch drauf reingefallen. Ich habe einen (hausinternen) FTP-Server aufgesetzt, kam aber von anderen Rechnern nicht auf den FTP-Server, trotz Firewall-Regeln ... Bis ich feststellen musste, dass Micro$oft zwar Regeln in der Firewall drin hat, die aber nicht aktiv sind ... Man muss sie aktivieren.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
RUzZlacK
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Do, 31. Mär 2016 11:32
Wohnort: Pforzheim

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von RUzZlacK »

georg hat geschrieben:Es gibt eine Hilfedatei zur Asinet, die sich im Book-Verzeichnis befindet: asinet.hlp
Jup Danke, gefunden, gelesen und gemerkt das es für meine Zwecke wirklich nicht ausreicht.

Naja wenns nicht mit Phils Ide klappen will, werd ich mich nach irgendeiner alternative umschauen.

Wenn jemand was kennt, was auch kostenlos zur Verfügung steht, wäre ich ihm dankbar. Von Marshallsoftware kostet ja was, so wie ichs gelesen hab.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von brandelh »

weiter oben gabs doch den Hinweis auf eines das sogar verschlüsselt. Ob es reicht weiß ich nicht.
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von Koverhage »

Oder das in Windows enthaltene FTP
einfach mal mit FTP /? aufrufen
Gruß
Klaus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von AUGE_OHR »

RUzZlacK hat geschrieben:

Code: Alles auswählen

METHOD XbFTP:iOpen()
...
  nProxyMode := 1+iif(Empty(::proxy),2,0)
   nHnd := DllExecuteCall( cTpl, cUserAgent, nProxyMode, ::proxy, "", 1 ) //hier nHnd := 0
versuche es mal damit

Code: Alles auswählen

//j  nProxyMode := 1+iif(Empty(::proxy),2,0)
   nProxyMode := 1+iif(Empty(::proxy),0,2)

//j  nHnd := DllExecuteCall( cTpl, cUserAgent, nProxyMode, ::proxy, "", 1 )
   nHnd := DllExecuteCall( cTpl, cUserAgent, nProxyMode,;
                  iif( Empty( ::proxy ), 0, ::proxy ), 0, 1 )
gruss by OHR
Jimmy
RUzZlacK
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Do, 31. Mär 2016 11:32
Wohnort: Pforzheim

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von RUzZlacK »

AUGE_OHR hat geschrieben:
RUzZlacK hat geschrieben:

Code: Alles auswählen

METHOD XbFTP:iOpen()
...
  nProxyMode := 1+iif(Empty(::proxy),2,0)
   nHnd := DllExecuteCall( cTpl, cUserAgent, nProxyMode, ::proxy, "", 1 ) //hier nHnd := 0
versuche es mal damit

Code: Alles auswählen

//j  nProxyMode := 1+iif(Empty(::proxy),2,0)
   nProxyMode := 1+iif(Empty(::proxy),0,2)

//j  nHnd := DllExecuteCall( cTpl, cUserAgent, nProxyMode, ::proxy, "", 1 )
   nHnd := DllExecuteCall( cTpl, cUserAgent, nProxyMode,;
                  iif( Empty( ::proxy ), 0, ::proxy ), 0, 1 )

Es hat geklappt, vielen Dank dir!! Mich interessiert noch was du da genau geändert hast oder bzw. in was du den Fehler gesehen hast?
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von brandelh »

In der oberen Zeile ...

Code: Alles auswählen

ALT:  nProxyMode := 1+iif(Empty(::proxy),2,0)
NEU:  nProxyMode := 1+iif(Empty(::proxy),0,2)
wurde bisher 3 bei leerem ::proxy zurückgegeben, nun 1 ... eventuell ein Fehler im alten code ?

Code: Alles auswählen

ALT: nHnd := DllExecuteCall( cTpl, cUserAgent, nProxyMode, ::proxy, "", 1 )
NEU: nHnd := DllExecuteCall( cTpl, cUserAgent, nProxyMode, iif( Empty( ::proxy ), 0, ::proxy ), 0, 1 )
oder einfacher aufgelöst:
if Empty( ::proxy )
   ::proxy := 0 // es könnte auch NIL sein ?
endif
NEU: nHnd := DllExecuteCall( cTpl, cUserAgent, nProxyMode, ::proxy, 0, 1 )  // nun kann man erkennen, dass eine 0 als Parameter statt einem Pointer auf einen leeren String übergeben wurde.
Im zweiten Beispile fängt er ::proxy = NIL ab, wobei eigentlich NIL von Xbase++ als 0 übergeben werden müsste (laut API Doku).
Zusätzlich wird der leere String als 0 übergeben, um das zu verstehen, müsste man die Windows API prüfen welcher Parameter richtig ist.
Aber wenn es jetzt geht scheint das so zu stimmen ;-)
Gruß
Hubert
RUzZlacK
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 28
Registriert: Do, 31. Mär 2016 11:32
Wohnort: Pforzheim

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von RUzZlacK »

Danke :D
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Verbindungsprobleme FTP von Phil Ide

Beitrag von AUGE_OHR »

brandelh hat geschrieben:Zusätzlich wird der leere String als 0 übergeben, um das zu verstehen, müsste man die Windows API prüfen welcher Parameter richtig ist.
https://msdn.microsoft.com/de-de/librar ... 85%29.aspx

Code: Alles auswählen

#define INTERNET_OPEN_TYPE_PRECONFIG 0
#define INTERNET_OPEN_TYPE_DIRECT 1
#define INTERNET_OPEN_TYPE_PROXY 3
#define INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY 4

#define INTERNET_FLAG_ASYNC 0x10000000
#define INTERNET_FLAG_FROM_CACHE 0x01000000
#define INTERNET_FLAG_OFFLINE 0x01000000
mehr über FTP Session https://msdn.microsoft.com/en-us/librar ... 85%29.aspx
gruss by OHR
Jimmy
Antworten