Seite 1 von 1

Updater

Verfasst: 20.02.2008 16:00
von Fox
Hi Leute...
Ich wollte für mein neues Programm nen Updater programmieren, was ja an sich nicht mal so schwer sein sollte.
Aber ich hab malwieder nen Fehler und weiss nicht wie ich ihn ausbessern soll... Es ist nur ein kleiner baer wie immer komme ich nicht drauf was es ist. (Er zeigts mir zwar an aber ich weiss nicht wie ichs ändern soll)
Hoffe ihr könnt mir helfen


Hier der Code:

Code: Alles auswählen

version = 1.0
aktuellsteversion = ReadString(0)  

If URLDownloadToFile_(0,"http://web56.login-1.loginserver.ch/fox/realitysoft/update/update.cfg","C:\update",0,0) = #S_OK
If ReadFile(0, "C:\update")   
    While Eof(0) = 0      
If version < aktuellsteversion    
 MessageRequester("Update","Update wird heruntergeladen")
 If URLDownloadToFile_(0,"http://web56.login-1.loginserver.ch/fox/realitysoft/update/update.exe","C:\update.exe",0,0) = #S_OK
  MessageRequester("Update","Update wurde heruntergeladen")
    RunProgram("C:\update.exe")
    Wend
    CloseFile(0)               
  Else
    MessageRequester("","Kein Update verfügbar")
  EndIf
EndIf
  EndIf

Verfasst: 20.02.2008 16:09
von RSBasic
@Fox
Hallo,
>aktuellsteversion = ReadString(0)
Du kannst keinen String in einer Variable speichern, von daher so:

Code: Alles auswählen

aktuellsteversion$ = ReadString(0) 
>Wend
Lösung:

Code: Alles auswählen

version = 1.0
aktuellsteversion$ = ReadString(0) 

If URLDownloadToFile_(0,"http://web56.login-1.loginserver.ch/fox/realitysoft/update/update.cfg","C:\update",0,0) = #S_OK
  If ReadFile(0, "C:\update")   
    While Eof(0) = 0     
      If version < aktuellsteversion   
        MessageRequester("Update","Update wird heruntergeladen")
        If URLDownloadToFile_(0,"http://web56.login-1.loginserver.ch/fox/realitysoft/update/update.exe","C:\update.exe",0,0) = #S_OK
          MessageRequester("Update","Update wurde heruntergeladen")
          RunProgram("C:\update.exe")
        EndIf
      EndIf
    Wend
    CloseFile(0)               
  Else
    MessageRequester("","Kein Update verfügbar")
  EndIf
EndIf
PS: Bitte richtig einrücken
>Ist der Code zu schwer bist zu schwach! :lol: :allright:

Verfasst: 20.02.2008 16:12
von Kaeru Gaman
auch denkbar wäre

Code: Alles auswählen

aktuellsteversion.s = ReadString(0) 
und wenn er irgendwo weiter vorne

Code: Alles auswählen

EnableExplicit
Define aktuellsteversion.s
stehen hat, stimmt sein Ausschnitt wieder so ...

-----------------------------------------

> Ist der Code zu schwer bist zu schwach!

...hatte mal Falko als Sig, oder war's HB?

Verfasst: 20.02.2008 17:03
von AND51
URLDownloadToFile_()? Benutz doch lieber ReceiveHTTPFile()!
Ist außerdem plattformunabhängiger.

Verfasst: 20.02.2008 17:18
von Fox
Hm.. ja wer ich noch ändern aber was ich nicht verstehe...
ich hab den code

Code: Alles auswählen

version = 1.0 


If URLDownloadToFile_(0,"http://web56.login-1.loginserver.ch/fox/realitysoft/update/update.cfg","C:\update",0,0) = #S_OK  
  If ReadFile(0, "C:\update")
  aktuellsteversion$ = ReadString(0)    
    While Eof(0) = 0      
      If version < aktuellsteversion    
        MessageRequester("Update","Update wird heruntergeladen") 
        If URLDownloadToFile_(0,"http://web56.login-1.loginserver.ch/fox/realitysoft/update/update.exe","C:\update.exe",0,0) = #S_OK 
          MessageRequester("Update","Update wurde heruntergeladen") 
          RunProgram("C:\update.exe") 
        EndIf 
      EndIf 
    Wend 
    CloseFile(0)                
  Else 
    MessageRequester("","Kein Update verfügbar") 
  EndIf 
EndIf 
und er läd nur die update.cfg (C:\update) herunter und dann ists aus.
Keine nachricht nichts
hab mir die werte der versionen ausgeben lassen er gibt mir bei version 1 und bei aktuellsteversion 0 aus
weiss nicht was ich falsch gemacht habe
brauche nochmal hilfe

danke

Verfasst: 20.02.2008 17:35
von gnasen
also in der runtergeladenen Datei ist ja folgender Inhalt:

Version|2.0

Im nächsten Schritt kommt folgendes:

Code: Alles auswählen

If ReadFile(0, "C:\update") 
aktuellsteversion$ = ReadString(0)   
[...] 
hier lieste ja noch alles fein aus, aber die anschließende:

Code: Alles auswählen

While Eof(0) = 0      
     [...]
Wend 
ergiebt ja keinen Sinn mehr, da du ja nur eine Zeile ausliest und in der Schleife nichts neues ausliest.

Dann kommt noch dieses:

Code: Alles auswählen

If version < aktuellsteversion  [...]  
wobei aktuellsteVersion noch keinen Wert hat ( aktuellsteVersion /= aktuellsteVersion$). Den Wert von Version weiss ich ebenfalls nicht.

Im Klartext:

1. Datei laden
2. Datei auslesen
3. Version aus dem String rauspicken! Dann 2 Variablen, keine Strings vergleichen!!!
4. Vergleichen und weiteres tun.

Bei dem ganzen den Debugger nutzen, und du solltest auf fehler rechtzeitig aufmerksam werden.