Updater

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Fox
Beiträge: 75
Registriert: 08.08.2007 10:14
Kontaktdaten:

Updater

Beitrag 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
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag 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:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

URLDownloadToFile_()? Benutz doch lieber ReceiveHTTPFile()!
Ist außerdem plattformunabhängiger.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Fox
Beiträge: 75
Registriert: 08.08.2007 10:14
Kontaktdaten:

Beitrag 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
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Beitrag 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.
Antworten