FTP connect probleme

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

FTP connect probleme

Beitrag von Tsuki-Namida »

Hallo,
Ich habe mir dieses Script verwendet um mich in ein FTP Account einloaagen zu können.

meine code sieht in etwar so aus:

Code: Alles auswählen

Procedure Upload(Server$,Port,User$,Pass$)
  If FTP_Init()
    Com_port.l=FTP_Connect(Server$,Port)
    If Com_port
      If FTP_Login(Com_port,User$,Pass$)
        If FTP_Store(Com_port,GetGadgetText(#Local_Verz) + T$)
          Messagerequester("Hinweis","Upload erfolgreich.")
        Else
          Messagerequester("Hinweis","Upload fehlgeschlagen.")
        EndIf
      EndIf
    EndIf
  EndIf
EndProcedure
so bekomme ich keine Verbindung -.- ich habe zwar die strings (und die variabel) im Debug Fenster überprüft und sie Stimmen auch aber ich bekomme halt keine verbindung :(
wenn ich die daten manuel eingebe anstelle der Strings dann komme ich auf den Server....
Bild
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

selbst damit hänge ich an dem selben problem :( habe es gerade getestet...
wenn ich die daten direckt eingebe (also mit "","","") dann geht es aber wenn ich die strings übergebe dann kommt immer eine "0" zurück ;(

:( :cry:
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Magix-Soft <Kain> hat geschrieben:wenn ich die daten direckt eingebe (also mit "","","") dann geht es aber wenn ich die strings übergebe dann kommt immer eine "0" zurück ;(
zeig mal den Aufruf der Prozedur.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

okay hier ist ein code ausschnit
die ganze procedure will ich euch nicht an tun das sind einige zeilen -.-

Code: Alles auswählen

Procedure Upload(Server$,Port,User$,Pass$)
  Debug Server$ ;////////////////////
  Debug Port    ;Mehr fach geprüft
  Debug User$   ;und es Stimmt alles 
  Debug Pass$   ;\\\\\\\\\\\\\\\\\\\\
  Init = FTPInit()
   Debug Init ;ist ungleich 0
  If Init
    Com_port.l=FTPConnect(Init, Server$, User$,  Pass$, Port)
    Debug Com_port ;Ist 0 bei mir jedenfals :(
    If FTPUpload(Com_port,T$,GetGadgetText(#Local_Verz) + T$)
      ;bis hier her komme ich nicht mehr :(
    EndIf
  EndIf
EndProcedure
naja die code anordnung ist die gleiche...
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Magix-Soft <Kain> hat geschrieben:okay hier ist ein code ausschnit
ich wollte eigentlich den Prozeduraufruf sehen, aber egal...

um das noch mal zu erfragen:

Code: Alles auswählen

  Debug Server$ ;////////////////////
  Debug Port    ;Mehr fach geprüft
  Debug User$   ;und es Stimmt alles 
  Debug Pass$   ;\\\\\\\\\\\\\\\\\\\\
  [...]
    Com_port.l=FTPConnect(Init, Server$, User$,  Pass$, Port)
... liefert eine 0 zurück

Code: Alles auswählen

    Com_port.l=FTPConnect(Init, "DeinServer", "DeinUser",  "DeinPass", 21)
... liefert einen Wert ungleich 0 zurück?

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

okay bitte verzei....

es lievert exakt 0 (null) zurück....

oaky hier noch mal der ausruf....
Upload(GetGadgetText(#FTP_Server)+GetGadgetText(#FTP_Verz),Val(GetGadgetText(#FTP_Port_)),GetGadgetText(#FTP_User),GetGadgetText(#FTP_Pass))

[Edit]
okay ich bin echt raatlos....

hier ist das ganze quelltext -.-


Der Hauptteil

Code: Alles auswählen

IncludeFile "ftp.pb"
Enumeration
  #Window
EndEnumeration

Enumeration
  #FTP_Server
  #FTP_Port_
  #FTP_User
  #FTP_Pass
  #FTP_Verz
  #No_Rar
  #Local_Verz
  #Local_Verz_such
  #Upload
  #Exit
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #Text_5
  #Text_6
  #Text_7
  #Text_8
  #Text_9
EndEnumeration

Procedure Upload(Server$,Port,User$,Pass$)
  Debug Server$
  Debug Port
  Debug User$
  Debug Pass$
  If OpenWindow(1,0,0,150,100,"Bitte Warten",#PB_Window_WindowCentered|#PB_Window_BorderLess) And CreateGadgetList(WindowID(1))
    SetWindowColor(1,RGB(99,00,00))
    TextGadget(#Text_7,0,0,150,20,"Bitte warten:")
    SetGadgetColor(#Text_7, #PB_Gadget_BackColor,RGB(99,00,00))
    SetGadgetColor(#Text_7, #PB_Gadget_FrontColor,RGB(99,99,CC))
    TextGadget(#Text_8,0,20,150,20,"")
    SetGadgetColor(#Text_8, #PB_Gadget_BackColor,RGB(99,00,00))
    SetGadgetColor(#Text_8, #PB_Gadget_FrontColor,RGB(99,99,CC))
    TextGadget(#Text_9,0,40,150,20,"")
    SetGadgetColor(#Text_9, #PB_Gadget_BackColor,RGB(99,00,00))
    SetGadgetColor(#Text_9, #PB_Gadget_FrontColor,RGB(99,99,CC))
  EndIf
  SetGadgetText(#Text_8,"Verbinden zum FTP Server.")
  Init = FTP_Init()
  Debug Init
  If Init
;    CallDebugger
    Com_port.l=FTP_Connect(Server$,Port)
  Else
    MessageRequester("Fehler","Bitte überprüfen Sie ihre Internetverbindung.",#MB_ICONERROR)
  EndIf
  Debug Com_port
  If Com_port
    If FTP_Login(Com_port,User$,Pass$)
     SetGadgetText(#Text_8,"Duchsuche Verzeichnis:")
      SetGadgetText(#Text_9,GetGadgetText(#Local_Verz))
      Delay(500)
      If ExamineDirectory(0, GetGadgetText(#Local_Verz), "*.rar")
        NewList Datei.s()
        While NextDirectoryEntry(0)
          T$ = DirectoryEntryName(0)
          If GetGadgetState(#No_Rar) = 1
            SetGadgetText(#Text_8,"Umbenennen von:")
            SetGadgetText(#Text_9,T$)
            Delay(100)
            TT$ = ReplaceString(T$,"part","pic",1,1)
            TT$ = ReplaceString(TT$,".rar",".jpg",1,1)
            Debug "von "+T$+" nach "+TT$+" umbenennen"
            RenameFile(GetGadgetText(#Local_Verz)+T$,GetGadgetText(#Local_Verz)+TT$)
            T$ = TT$
          EndIf
          SetGadgetText(#Text_8,"Uploaden von:")
          SetGadgetText(#Text_9,T$)
                Debug T$
          If FTP_Store(Com_port,GetGadgetText(#Local_Verz) + T$)
            SetGadgetText(#Text_8,T$+"Wurde erfolgreich")
            SetGadgetText(#Text_9,"hochgeladen.")
          Else
            SetGadgetText(#Text_8,"Fehler beim Hochladen von:")
            SetGadgetText(#Text_9,T$)
          EndIf
          Delay(500)
          AddElement(Datei.s())
          Datei.s() = T$
        Wend
        SetGadgetText(#Text_8,"Erstellen der Dateiliste")
        SetGadgetText(#Text_9,"")
        Version$ = InputRequester("Versions Nummer","Bitte geben Sie die Aktuelle Version das Updates an.","")
        If CreateFile(1,GetGadgetText(#Local_Verz) + "inhalt.html")
          WriteStringN(1,Version$)
          While NextElement(Datei.s())
            WriteStringN(1,Datei.s())
          Wend
          CloseFile(1)
          SetGadgetText(#Text_8,"Uploaden von:")
          SetGadgetText(#Text_9,"inhalt.html")
          If FTP_Store(Com_port,GetGadgetText(#Local_Verz) + "inhalt.html")
            SetGadgetText(#Text_8,"inhalt.html Wurde erfolgreich")
            SetGadgetText(#Text_9,"hochgeladen.")
          Else
            SetGadgetText(#Text_8,"Fehler beim Hochladen von:")
            SetGadgetText(#Text_9,"inhalt.html")
          EndIf
          Delay(500)
        Else
          MessageRequester("Fehler","Es ist ein Problem beim Erstellen der Dateiliste aufgetreten.",#MB_ICONERROR)
        EndIf
      EndIf
      CloseNetworkConnection(Init)
    EndIf
  Else
    MessageRequester("Fehler","Fehler beim verbinden zum FTP Server",#MB_ICONERROR)
  EndIf
  SetGadgetText(#Text_7,"Fertigstellen:")
  SetGadgetText(#Text_8,"Dateien und Serverkontakte")
  SetGadgetText(#Text_9,"wurden geschlossen.")
  Delay(1000)
  CloseWindow(1)
EndProcedure

Procedure Speichern()
  If CreateFile(0,"PatchUpload.txt")
    WriteStringN(0, "FTP Server: "+GetGadgetText(#FTP_Server))
    WriteStringN(0, "FTP Port: "+GetGadgetText(#FTP_Port_))
    WriteStringN(0, "FTP Benutzer: "+GetGadgetText(#FTP_User))
    WriteStringN(0, "FTP Passwort: "+GetGadgetText(#FTP_Pass))
    WriteStringN(0, "FTP Verzeichnis: "+GetGadgetText(#FTP_Verz))
    WriteStringN(0, "Rar erlaubt: "+Str(GetGadgetState(#No_Rar)))
    WriteStringN(0, "local Verzeichnis: "+GetGadgetText(#Local_Verz))
    CloseFile(0)
  Else
    MessageRequester("Error","Das speichern ist fehlgeschlage!",#MB_ICONERROR)
  EndIf
EndProcedure

Procedure Laden()
  If ReadFile(0,"PatchUpload.txt")
    While Eof(0) = 0
      T$ = ReadString(0)
      If FindString(T$,"FTP Server: ",1)
        SetGadgetText(#FTP_Server,RemoveString(T$,"FTP Server: "))
      EndIf
      If FindString(T$,"FTP Port: ",1)
        SetGadgetText(#FTP_Port_,RemoveString(T$,"FTP Port: "))
      EndIf
      If FindString(T$,"FTP Benutzer: ",1)
        SetGadgetText(#FTP_User,RemoveString(T$,"FTP Benutzer: "))
      EndIf
      If FindString(T$,"FTP Passwort: ",1)
        SetGadgetText(#FTP_Pass,RemoveString(T$,"FTP Passwort: "))
      EndIf
      If FindString(T$,"FTP Verzeichnis: ",1)
        SetGadgetText(#FTP_Verz,RemoveString(T$,"FTP Verzeichnis: "))
      EndIf
      If FindString(T$,"Rar erlaubt: ",1)
        SetGadgetState(#No_Rar,Val(RemoveString(T$,"Rar erlaubt: ")))
      EndIf
      If FindString(T$,"local Verzeichnis: ",1)
        SetGadgetText(#Local_Verz,RemoveString(T$,"local Verzeichnis: "))
      EndIf
    Wend
  Else
    MessageRequester("Error","Das laden der Einstellung ist fehlgeschlagen, oder nicht vorhanden!",#MB_ICONERROR)
  EndIf
EndProcedure

If OpenWindow(#Window,0,0,300,200,"Client Update hochladen",#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
  TextGadget(#Text_1,5,5,100,20,"FTP Server:")
  TextGadget(#Text_2,5,25,100,20,"Server: (ohne 'ftp://')")
  StringGadget(#FTP_Server,107,23,190,20,"")
  TextGadget(#Text_3,5,45,100,20,"FTP Port:")
  StringGadget(#FTP_Port_,107,43,190,20,"21",#PB_String_Numeric)
  TextGadget(#Text_4,5,65,100,20,"Benutzername:")
  StringGadget(#FTP_User,107,63,190,20,"")
  TextGadget(#Text_5,5,85,100,20,"Passwort:")
  StringGadget(#FTP_Pass,107,83,190,20,"",#PB_String_Password)
  TextGadget(#Text_6,5,105,100,20,"Verzeichnis:")
  StringGadget(#FTP_Verz,107,103,190,20,"/")
  CheckBoxGadget(#No_Rar,5,125,290,20,"*part[Nummer].rar in *pic[Nummer].jpg Umbennenen")
  StringGadget(#Local_Verz,5,145,200,20,"C:\")
  ButtonGadget(#Local_Verz_such,205,145,50,20,"Suchen")
  ButtonGadget(#Upload,50,175,50,20,"Starten")
  ButtonGadget(#Exit,200,175,50,20,"Beenden")
EndIf
Laden()
Repeat
  Event = WaitWindowEvent()
  WindowID = EventWindow()
  GadgetID = EventGadget()
  EventType = EventType()
  
  If Event = #PB_Event_Gadget
    If GadgetID = #Local_Verz_such
      SetGadgetText(#Local_Verz,PathRequester("Update Verzeichnis",GetGadgetText(#Local_Verz)))
    ElseIf GadgetID = #Upload
      Speichern()
      Upload(GetGadgetText(#FTP_Server)+GetGadgetText(#FTP_Verz),Val(GetGadgetText(#FTP_Port_)),GetGadgetText(#FTP_User),GetGadgetText(#FTP_Pass))
    ElseIf GadgetID = #Exit
      Speichern()
      Event = #PB_Event_CloseWindow
    EndIf
  EndIf
Until Event = #PB_Event_CloseWindow
End
hier ist die ftp.pb

Code: Alles auswählen

server_reply.s=Space(10240)
#FTP_PORT=21
#LFCR=Chr(13)+Chr(10)

#FTP_OK = 1
#FTP_ERROR = 0
#FTP_TimeOut = -1

Global FTP_Last_Message.s, ftp_data.l

Procedure Int_FTP_PASV(Ftp)
 
  Delay(100)
  SendNetworkString(Ftp,"PASV"+#LFCR)
 
  time.l=Date()
 
  Repeat
    Event=NetworkClientEvent(Ftp)
   
    If Event=0
     
      now=Date()
      If now-time > 20
        FTP_Last_Message="Time out"
        ProcedureReturn #FTP_TimeOut
      EndIf
     
    ElseIf Event=2
     
      In.s=Space(10240)
      result=ReceiveNetworkData(Ftp,@In,Len(In))
      In=Trim(In)
      FTP_Last_Message=In
     
      ;{ -- Analise data --
     
      ; -- Error Parsing
      If FindString(In,"530",1)
        ProcedureReturn #FTP_ERROR
      EndIf
     
      ; -- OK Parsing
     
      ;{ -- Retrieve Server IP and Data Port
      If FindString(In,"227",1)
        Argument$=Trim(In)
        startpos=FindString(Argument$, "(", 1)
        Position = FindString(Argument$, ",", 1)
        server_ip.s = Mid(Argument$, startpos+1, Position-1-startpos)+"."
        NewPosition = FindString(Argument$, ",", Position+1)
        server_ip= server_ip+Mid(Argument$, Position+1, NewPosition-Position-1)+"."
        Position = FindString(Argument$, ",", NewPosition+1)
        server_ip= server_ip+Mid(Argument$, NewPosition+1, Position-NewPosition-1)+"."
        NewPosition = FindString(Argument$, ",", Position+1)
        server_ip= server_ip+Mid(Argument$, Position+1, NewPosition-Position-1)
        server_ip = Trim(server_ip)
        ; Get the port..
        ;
        Position = FindString(Argument$, ",", NewPosition+1)
        ClientPort = Val(Mid(Argument$, NewPosition+1, Position-NewPosition-1)) << 8+Val(Right(Argument$, Len(Argument$)-Position))
        ;}
       
        ftp_data= OpenNetworkConnection(server_ip,ClientPort)
       
        If ftp_data
          ProcedureReturn #FTP_OK
        EndIf
       
      EndIf
     
      ;}
     
    EndIf
   
    Delay(50)
   
  Until quit=1
 
  quit=0
 
  ProcedureReturn #FTP_OK
 
EndProcedure


Procedure Int_FTP_PASV_CLOSE()
  CloseNetworkConnection(ftp_data)
  ftp_data=0
EndProcedure

Procedure.s FTP_Last_Message()
  ProcedureReturn FTP_Last_Message
EndProcedure

Procedure FTP_Init()
  If InitNetwork()
    ProcedureReturn 1
  Else
    FTP_Last_Message="Unable to start TCP/IP stack..."
    ProcedureReturn 0
  EndIf
EndProcedure

Procedure FTP_Connect(Server.s,Port.l) ; // Returns FTPconnection
  thread.l=OpenNetworkConnection(Server,Port)
;  Debug OpenNetworkConnection(Server,Port)
  If thread
    ProcedureReturn thread
  Else
    FTP_Last_Message="Unable to connect to specified server..."
    ProcedureReturn 0
  EndIf
EndProcedure

Procedure FTP_Login(Ftp.l,UserName.s,Password.s)
 
  If Ftp=0
    ProcedureReturn #FTP_ERROR
  EndIf
 
  Delay(100)
  SendNetworkString(Ftp,"USER "+UserName+#LFCR)
 
  time.l=Date()
 
  Repeat
    Event=NetworkClientEvent(Ftp)
   
    If Event=0
     
      now=Date()
      If now-time > 20
        ProcedureReturn #FTP_TimeOut
      EndIf
     
    ElseIf Event=2
     
      In.s=Space(10240)
      result=ReceiveNetworkData(Ftp,@In,Len(In))
      In=Trim(In)
      FTP_Last_Message=In
     
      ;{ -- Analise data --
     
      ; -- Error Parsing
      If FindString(In,"530",1)
        ProcedureReturn #FTP_ERROR
      EndIf
     
      ; -- OK Parsing
     
      If FindString(In,"331",1)
        time.l=Date()
        SendNetworkString(Ftp,"PASS "+Password+#LFCR)
      EndIf
     
      If FindString(In,"230",1)
        time.l=Date()
        SendNetworkString(Ftp,"TYPE A"+#LFCR)
        ProcedureReturn #FTP_OK
      EndIf
     
      ;}
     
    EndIf
   
    Delay(50)
   
  Until quit=1
 
  quit=0
 
  ProcedureReturn #FTP_OK
 
EndProcedure

Procedure FTP_LogOut(Ftp.l)
 
  If Ftp=0
    ProcedureReturn #FTP_ERROR
  EndIf
 
  Delay(100)
  SendNetworkString(Ftp,"QUIT"+#LFCR)
 
  time.l=Date()
 
  Repeat
    Event=NetworkClientEvent(Ftp)
   
    If Event=0
     
      now=Date()
      If now-time > 20
        FTP_Last_Message="Time out"
        ProcedureReturn #FTP_TimeOut
      EndIf
     
    ElseIf Event=2
     
      In.s=Space(10240)
      result=ReceiveNetworkData(Ftp,@In,Len(In))
      In=Trim(In)
      FTP_Last_Message=In
     
      ;{ -- Analise data --
     
      ; -- Error Parsing
      If FindString(In,"530",1)
        ProcedureReturn #FTP_ERROR
      EndIf
     
      ; -- OK Parsing
     
      If FindString(In,"221",1)
        time.l=Date()
        ProcedureReturn #FTP_OK
      EndIf
     
      ;}
     
    EndIf
   
    Delay(50)
   
  Until quit=1
 
  quit=0
 
  ProcedureReturn #FTP_OK
EndProcedure

Procedure FTP_Close(Ftp.l)
  If Ftp=0
    ProcedureReturn #FTP_ERROR
  EndIf
 
  If CloseNetworkConnection(Ftp)
    ProcedureReturn #FTP_OK
  Else
    FTP_Last_Message="Unable to close specified ftp connection"
    ProcedureReturn #FTP_ERROR
  EndIf
EndProcedure

Procedure FTP_List(Ftp.l)
 
  If Ftp=0
    ProcedureReturn #FTP_ERROR
  EndIf
 
  If ftp_data=0
    If Int_FTP_PASV(Ftp)=0
      ProcedureReturn #FTP_ERROR
    EndIf
  EndIf
 
  Delay(100)
  SendNetworkString(Ftp,"LIST"+#LFCR)
 
  time.l=Date()
 
  Repeat
    Event=NetworkClientEvent(Ftp)
   
    If ftp_data
      ftp_data_event=NetworkClientEvent(ftp_data)
    EndIf
   
    If ftp_data_event=2
      In.s=Space(48000)
      result=ReceiveNetworkData(ftp_data,@In,Len(In))
      In=Trim(In)
      FTP_Last_Message=In
      Int_FTP_PASV_CLOSE()
      ProcedureReturn #FTP_OK
    EndIf
   
    If Event=0
     
      now=Date()
      If now-time > 20
        FTP_Last_Message="Time out"
        ProcedureReturn #FTP_TimeOut
      EndIf
     
    ElseIf Event=2
     
      In.s=Space(10240)
      result=ReceiveNetworkData(Ftp,@In,Len(In))
      In=Trim(In)
      FTP_Last_Message=In
     
      ;{ -- Analise data --
     
      ; -- Error Parsing
      If FindString(In,"530",1)
        ProcedureReturn #FTP_ERROR
      EndIf
     
      ; -- OK Parsing
      time.l=Date()
     
     
      ;}
     
    EndIf
   
    Delay(50)
   
  Until quit=1
 
  quit=0
 
  ProcedureReturn #FTP_OK
EndProcedure

Procedure FTP_Retrieve(Ftp.l,filename.s,Destination.s)
 
  If Ftp=0
    ProcedureReturn #FTP_ERROR
  EndIf
 
  If ftp_data=0
    If Int_FTP_PASV(Ftp)=0
      ProcedureReturn #FTP_ERROR
    EndIf
  EndIf
 
  mem=AllocateMemory(64000)
 
  If CreateFile(0,Destination+filename)=0 And mem
    FTP_Last_Message="Unable to create file"
    CloseNetworkConnection(ftp_data)
    ProcedureReturn #FTP_ERROR
  EndIf
 
  Delay(100)
  SendNetworkString(Ftp,"RETR "+filename+#LFCR)
 
  time.l=Date()
 
  Repeat
    Event=NetworkClientEvent(Ftp)
   
    If ftp_data
      ftp_data_event=NetworkClientEvent(ftp_data)
    EndIf
   
    If ftp_data_event=2
      result=ReceiveNetworkData(ftp_data,mem,64000)
      If result>0
        WriteData(0,mem,result)
        Goto again:
      EndIf
      CloseFile(0)
      FreeMemory(mem)
      Int_FTP_PASV_CLOSE()
      ProcedureReturn #FTP_OK
      again:
    EndIf
   
    If Event=0
     
      now=Date()
      If now-time > 20
        FTP_Last_Message="Time out"
        ProcedureReturn #FTP_TimeOut
      EndIf
     
    ElseIf Event=2
     
      In.s=Space(10240)
      result=ReceiveNetworkData(Ftp,@In,Len(In))
      In=Trim(In)
      FTP_Last_Message=In
     
      ;{ -- Analise data --
     
      ; -- Error Parsing
      If FindString(In,"550",1)
        ProcedureReturn #FTP_ERROR
      EndIf
     
      ; -- OK Parsing
      time.l=Date()
     
      ;}
     
    EndIf
   
    Delay(50)
   
  Until quit=1
 
  quit=0
 
  ProcedureReturn #FTP_OK
EndProcedure

Procedure FTP_CurrentDir(Ftp.l)
 
  If Ftp=0
    ProcedureReturn #FTP_ERROR
  EndIf
 
  Delay(100)
  SendNetworkString(Ftp,"PWD"+#LFCR)
 
  time.l=Date()
 
  Repeat
    Event=NetworkClientEvent(Ftp)
   
    If Event=0
     
      now=Date()
      If now-time > 20
        FTP_Last_Message="Time out"
        ProcedureReturn #FTP_TimeOut
      EndIf
     
    ElseIf Event=2
     
      In.s=Space(10240)
      result=ReceiveNetworkData(Ftp,@In,Len(In))
     
     
      ;{ -- Analise data --
     
      ; -- Error Parsing
      If FindString(In,"530",1)
        ProcedureReturn #FTP_ERROR
      EndIf
     
      ; -- OK Parsing
     
      If FindString(In,"257",1)
        In=Trim(In)
        In=RemoveString(In,#LFCR)
        Position=FindString(In,"/",1)
        endposition=FindString(In,Chr(34),Position+3)-Position
        In=Mid(In,Position+1,endposition-1)
        FTP_Last_Message=In
        ProcedureReturn #FTP_OK
      EndIf
     
      time.l=Date()
     
      ;}
     
    EndIf
   
    Delay(50)
   
  Until quit=1
 
  quit=0
 
  ProcedureReturn #FTP_OK
 
 
EndProcedure

Procedure FTP_ChangeDir(Ftp.l,Dirname.s)
 
  If Ftp=0
    ProcedureReturn #FTP_ERROR
  EndIf
 
  Delay(100)
  SendNetworkString(Ftp,"CWD "+Dirname+#LFCR)
 
  time.l=Date()
 
  Repeat
    Event=NetworkClientEvent(Ftp)
   
    If Event=0
     
      now=Date()
      If now-time > 20
        FTP_Last_Message="Time out"
        ProcedureReturn #FTP_TimeOut
      EndIf
     
    ElseIf Event=2
     
      In.s=Space(10240)
      result=ReceiveNetworkData(Ftp,@In,Len(In))
      ;{ -- Analise data --
     
      ; -- Error Parsing
      If FindString(In,"550",1)
        ProcedureReturn #FTP_ERROR
      EndIf
     
      ; -- OK Parsing
     
      If FindString(In,"250",1)
        In=Trim(In)
        In=RemoveString(In,#LFCR)
        FTP_Last_Message=In
        ProcedureReturn #FTP_OK
      EndIf
     
      time.l=Date()
     
      ;}
     
    EndIf
   
    Delay(50)
   
  Until quit=1
 
  quit=0
 
  ProcedureReturn #FTP_OK
 
 
EndProcedure

Procedure FTP_Store(Ftp.l,filename.s)
 
  Block_size.l=4096
 
  If Ftp=0
    ProcedureReturn #FTP_ERROR
  EndIf
 
 
  If ftp_data=0
    If Int_FTP_PASV(Ftp)=0
      ProcedureReturn #FTP_ERROR
    EndIf
  EndIf
 
 
  file_size.l=FileSize(filename)
 
  If file_size>Block_size
    Blocks.l=file_size/Block_size
    Last_Block.l=file_size-(Block_size*Blocks)
  Else
    Blocks.l=1
    Block_size=file_size
  EndIf
 
  mem=AllocateMemory(Block_size)
 
  If OpenFile(0,filename)=0 And mem
    FTP_Last_Message="Unable to open file"
    CloseNetworkConnection(ftp_data)
    ProcedureReturn #FTP_ERROR
  EndIf
 
  Delay(100)
  SendNetworkString(Ftp,"STOR "+GetFilePart(filename)+#LFCR)
  time.l=Date()
 
  Repeat
   
    Event=NetworkClientEvent(Ftp)
   
    If ftp_data
      ftp_data_event=NetworkClientEvent(ftp_data)
    EndIf
   
    If ftp_data_event=2
      result=ReceiveNetworkData(ftp_data,mem,Block_size)
      CloseFile(0)
      FreeMemory(mem)
      Int_FTP_PASV_CLOSE()
      ProcedureReturn #FTP_OK
    EndIf
   
    If Event=0
     
      now=Date()
      If now-time > 20
        FTP_Last_Message="Time out"
        ProcedureReturn #FTP_TimeOut
      EndIf
     
    ElseIf Event=2
     
      In.s=Space(10240)
      result=ReceiveNetworkData(Ftp,@In,Len(In))
      In=Trim(In)
      FTP_Last_Message=In
     
      ;{ -- Analise data --
     
      ; -- Error Parsing
      If FindString(In,"550",1)
        ProcedureReturn #FTP_ERROR
      EndIf
     
      ; -- OK Parsing
     
      If FindString(In,"125",1)
        For a=1 To Blocks
          ReadData(0,mem,Block_size)
          SendNetworkData(ftp_data,mem,Block_size)
        Next
       
        If Last_Block>0
          ReadData(0,mem,Last_Block)
          SendNetworkData(ftp_data,mem,Last_Block)
        EndIf
        Int_FTP_PASV_CLOSE()
       
      EndIf
     
      If FindString(In,"226",1)
        CloseFile(0)
        FreeMemory(mem)
        ProcedureReturn #FTP_OK
      EndIf
     
      time.l=Date()
     
      ;}
     
    EndIf
   
    Delay(50)
   
  Until quit=1
 
  quit=0
 
  ProcedureReturn #FTP_OK
 
EndProcedure

Procedure FTP_MakeDir(Ftp.l,Dirname.s)
  If Ftp=0 Or Dirname=""
    ProcedureReturn #FTP_ERROR
  EndIf
 
  Delay(100)
  SendNetworkString(Ftp,"MKD "+Dirname+#LFCR)
 
  time.l=Date()
 
  Repeat
    Event=NetworkClientEvent(Ftp)
   
    If Event=0
     
      now=Date()
      If now-time > 20
        FTP_Last_Message="Time out"
        ProcedureReturn #FTP_TimeOut
      EndIf
     
    ElseIf Event=2
     
      In.s=Space(10240)
      result=ReceiveNetworkData(Ftp,@In,Len(In))
     
      ;{ -- Analise data --
     
      ; -- Error Parsing
      If FindString(In,"530",1)
        ProcedureReturn #FTP_ERROR
      EndIf
     
      If FindString(In,"550",1)
        ProcedureReturn #FTP_OK
      EndIf
     
      ; -- OK Parsing
     
      If FindString(In,"257",1)
        In=Trim(In)
        In=RemoveString(In,#LFCR)
        Position=FindString(In,"/",1)
        endposition=FindString(In,Chr(34),Position+3)-Position
        In=Mid(In,Position+1,endposition-1)
        FTP_Last_Message=In
        ProcedureReturn #FTP_OK
      EndIf
     
      time.l=Date()
     
      ;}
     
    EndIf
   
    Delay(50)
   
  Until quit=1
 
  quit=0
 
  ProcedureReturn #FTP_OK
 
 
EndProcedure

Procedure FTP_RemoveDir(Ftp.l,Dirname.s)
 
  If Ftp=0 Or Dirname=""
    ProcedureReturn #FTP_ERROR
  EndIf
 
  Delay(100)
  SendNetworkString(Ftp,"RMD "+Dirname+#LFCR)
 
  time.l=Date()
 
  Repeat
    Event=NetworkClientEvent(Ftp)
   
    If Event=0
     
      now=Date()
      If now-time > 20
        FTP_Last_Message="Time out"
        ProcedureReturn #FTP_TimeOut
      EndIf
     
    ElseIf Event=2
     
      In.s=Space(10240)
      result=ReceiveNetworkData(Ftp,@In,Len(In))
     
      ;{ -- Analise data --
     
      ; -- Error Parsing
      If FindString(In,"550",1)
        ProcedureReturn #FTP_ERROR
      EndIf
     
      ; -- OK Parsing
     
      If FindString(In,"250",1)
        In=Trim(In)
        FTP_Last_Message=In
        ProcedureReturn #FTP_OK
      EndIf
     
      time.l=Date()
     
      ;}
     
    EndIf
   
    Delay(50)
   
  Until quit=1
 
  quit=0
 
  ProcedureReturn #FTP_OK
 
 
EndProcedure

Procedure FTP_Delete(Ftp.l, filename.s)
 
  If Ftp=0 Or filename=""
    ProcedureReturn #FTP_ERROR
  EndIf
 
  Delay(100)
  SendNetworkString(Ftp,"DELE "+filename+#LFCR)
 
  time.l=Date()
 
  Repeat
    Event=NetworkClientEvent(Ftp)
   
    If Event=0
     
      now=Date()
      If now-time > 20
        FTP_Last_Message="Time out"
        ProcedureReturn #FTP_TimeOut
      EndIf
     
    ElseIf Event=2
     
      In.s=Space(10240)
      result=ReceiveNetworkData(Ftp,@In,Len(In))
     
      ;{ -- Analise data --
     
      ; -- Error Parsing
      If FindString(In,"550",1)
        ProcedureReturn #FTP_ERROR
      EndIf
     
      ; -- OK Parsing
     
      If FindString(In,"250",1)
        In=Trim(In)
        FTP_Last_Message=In
        ProcedureReturn #FTP_OK
      EndIf
     
      time.l=Date()
     
      ;}
     
    EndIf
   
    Delay(50)
   
  Until quit=1
 
  quit=0
 
  ProcedureReturn #FTP_OK
 
EndProcedure
ihr könnte ja ggf. mal selber probieren aber solange der fehler nicht gefunden ist wird die fehlermeldung kommen das man nicht zum ftp verbinden konnte..... so ist es jedenfals bei mir...

wenn ich die daten direckt im quelltext angebe bekomme ich kontackt zum server....
Bild
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

okay, habe das jetzt nicht ausprobiert, aber versuche einfach mal folgendes:
jeden GetGadgetText-Aufruf mit ein Trim-Befehl versehen.
Achtung, meine ja nur den eigentlichen Ftp-Aufruf, wo du es mit dem Klartext probiert hast.
Bei mir hat es meistens dann gefuntz, wenn ich alle Leerzeichen eliminiert habe.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Gross/klein schreibung beachten
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

@mk-soft
wenn du die loggin daten meinst... dann stimmen die 100% überein....

@dysti
was ist "Trim-Befehl"? (okay werde mal in der hilfe suchen...
aber warum leerzeichen elimeniren? in den Stringgadget wird kein leerzeichen gemacht eseiden es ist teil des passwords oder benutzernamens was eigentlich sehr unwarscheinlich ist


[Edit]
okay trim() ist mir bekannt ^^
[Edit End]
Bild
Antworten