Seite 1 von 2

Laden einer Variable bringt fehler

Verfasst: 03.04.2013 22:35
von NeoRon
Hallo,

habe ein problem mit 2 Variablen.
Im laufenden Programm ohne Speichern und laden funktioniert es einbahnfrei. Nach ner bestätigung soll er 2 Variable den Wert 1 zuweisen.
sobald ich aber speicher und dann lade zeigt er mir im debug fenster bei einer plötzlich 0 und bei der anderen 2.
Warum ändert er mir die Werte ab.
Das Programm läuft dann mit den Falchen Werten Fehlerhaft.

Hier mal der Speicher und Lade Code mit denen 2 Variablen:

LADEN:

Code: Alles auswählen

Case #KNOPF_Laden
 #DATEI_REPORT = 1
   .......
     tech1.l
     tech2.l
    ........
If ReadFile(#DATEI_REPORT, "name.txt")
  While Eof(#DATEI_REPORT) = #False
  .......
      tech1 = ReadLong(#DATEI_REPORT)
    tech2 = ReadLong(#DATEI_REPORT)
  ....... 
  Wend
  CloseFile(#DATEI_REPORT)
    MessageRequester("Laden", "geladen") 
spielhauptmenu()
  EndIf
Hier Speichert er:

Code: Alles auswählen

       Case #knopf_Speichern    
    #Datei_Name = 1
    #Datei_Name2 = 1
    #Datei_Name3 = 1
    #Datei_Name4 = 1
    #Datei_Name5 = 1
    #Datei_Name6 = 1
    #Datei_Name7 = 1
    #Datei_Name8 = 1
    #Datei_Name9 = 1
    #Datei_Name10 = 1
    #Datei_Name11 = 1
    #Datei_Name12 = 1
    #Datei_Name13 = 1
    #Datei_Name14 = 1
    #Datei_Name15 = 1
    #Datei_Name16 = 1
    #Datei_Name17 = 1
    #Datei_Name18 = 1
    #Datei_Name19 = 1
    #Datei_Name20 = 1
    #Datei_Name21 = 1
    #Datei_Name22 = 1
    #Datei_Name23 = 1
    #Datei_Name24 = 1
    #Datei_Name25 = 1
    #Datei_Name26 = 1
 
    ..............
    
    tech2.l
    tech1.l
..........
    
If CreateFile(#Datei_Name, "name.txt")
  
  WriteLong(#Datei_Name22, tech2.l)
  WriteLong(#Datei_Name23, tech1.l)
  CloseFile(#Datei_Name)
     MessageRequester("Speichern", "gespeichert") 
  EndIf
Komme einfach net drauf warum er mir die abändert. -_-

Schauts euch mal an.
Danke !

Gruß NeoRon

Re: Laden einer Variable bringt fehler

Verfasst: 03.04.2013 22:43
von ts-soft
Mit dem unvollständigem Code kann man leider nichts anfangen.

Code: Alles auswählen

Define tech2.l, tech1.l

If CreateFile(0, GetTemporaryDirectory() + "name.txt")
  WriteLong(0, 1)
  WriteLong(0, 2)
  CloseFile(0)
EndIf

If ReadFile(0, GetTemporaryDirectory() + "name.txt")
  tech1 = ReadLong(0)
  tech2 = ReadLong(0)
  CloseFile(0)
EndIf

Debug tech1
Debug tech2
So funktioniert es, aber warum Du keine Preferences dafür nutzt ist mir jetzt auch nicht klar.

Gruß
Thomas

Re: Laden einer Variable bringt fehler

Verfasst: 04.04.2013 13:51
von NicTheQuick
Also diese ewige Konstantenliste kommt mir auch schon sehr kompliziert gedacht vor...

Code: Alles auswählen

    #Datei_Name = 1
    #Datei_Name2 = 1
    #Datei_Name3 = 1
    #Datei_Name4 = 1
    #Datei_Name5 = 1
    #Datei_Name6 = 1
    #Datei_Name7 = 1
    #Datei_Name8 = 1
    #Datei_Name9 = 1
    #Datei_Name10 = 1
    #Datei_Name11 = 1
    #Datei_Name12 = 1
    #Datei_Name13 = 1
    #Datei_Name14 = 1
    #Datei_Name15 = 1
    #Datei_Name16 = 1
    #Datei_Name17 = 1
    #Datei_Name18 = 1
    #Datei_Name19 = 1
    #Datei_Name20 = 1
    #Datei_Name21 = 1
    #Datei_Name22 = 1
    #Datei_Name23 = 1
    #Datei_Name24 = 1
    #Datei_Name25 = 1
    #Datei_Name26 = 1
Ich wette das kannst du wesentlich eleganter machen.

Re: Laden einer Variable bringt fehler

Verfasst: 04.04.2013 14:45
von maupa
Hi,
wirklich ohne den Rest zu sehen ist es schwer zu verstehen wo dein Fehler ist.

Bei Speichern hast du den beiden Variablen nichts drin

tech2.l <- hat kein wert zugewiesen
tech1.l < hat kein wert zugewiesen

hier werden aber 2* 4 Bits gespeichert
ASCI = "00000000"

Das Speichen und laden funktioniert 1A in deinen Beispiel, daher musst du überprüffen von dem Spieichern, ob in der Variablen das richtige drin ist

Re: Laden einer Variable bringt fehler

Verfasst: 04.04.2013 15:56
von NeoRon
Hi,

die Variablen sind Globalisiert und beim laden weist er denen die gespeicherten werte zu.

Ich habe es überprüft über den debugger.

Die Variablen sollen den Wert 0 am anfang haben.
Erst im laufenden programm soll der wert dann ab nem bestimmten Ereignis den Wert 1 zugewiesen bekommen.
Vor dem Speichern zeigt er mir die richtigen Werte an die gespeichert werden sollen und zwar bei beiden Variablen mit dem Wert 1.

Wenn ich dann Lade dann zeigt er ir bei einer Variablen 0 und bei der anderen 2 im debugger an und das programm läuft dann fehlerhaft.

Re: Laden einer Variable bringt fehler

Verfasst: 04.04.2013 16:14
von NicTheQuick
Also was mir oben bei deinem Code auffällt ist das hier:

Code: Alles auswählen

If CreateFile(#Datei_Name, "name.txt")
 
  WriteLong(#Datei_Name22, tech2.l)
  WriteLong(#Datei_Name23, tech1.l)
  CloseFile(#Datei_Name)
     MessageRequester("Speichern", "gespeichert")
  EndIf
Du machst 'CreateFile' mit '#Datei_Name', aber dann 'WriteLong' mit '#DateiName_22' und '#DateiName_23'. Auch wenn scheinbar alle diese Konstanten immer 1 sind, macht das alles keinen Sinn. Wieso sind diese ganzen '#Datei_NameXXX' alle 1? Oder sollen das Zukünftig auch mal andere Werte werden?

Re: Laden einer Variable bringt fehler

Verfasst: 04.04.2013 16:29
von ts-soft
Ohne ausführbaren Code, der das Problem nachvollziehbar macht, ist hier alles sinnlos.

Man kann also nur raten, was zwar auch zum Ziel führen könnte, aber nicht sinn der Sache ist.

Aber ein paar mögliche Fehlerquellen kann ich ja noch aufzählen, die hier aber nicht überprüfbar sind:
Die Daten werden in einem Pfad gespeichert, wo die Rechte fehlen, der also von Windows deshalb
virtualisiert wird. Beim wieder einlesen fehlen diese Rechte nicht, es wird also die falsche Datei gelesen.

Es wurde die einzulesende Datei nach dem Schreiben nicht geschlossen.

Der Pfad zur Datei stimmt nicht, da hier auch nicht ersichtlich ist, wer das aktuelle Verzeichnis festgelegt hat

usw., usw.

Es ist grundsätzlich erforderlich, einen auf ein minimum reduzierten Code zu Posten, der das Problem nachvollziehbar
macht. Es macht keinen Sinn, wenn ich oder jemand anders, aus dem von Dir gepostetem Skelett einen ausführbaren
Code bastelt, weil dieser wird aller Wahrscheinlichkeit nach, Deinen gemachten Fehler nicht enthalten und funktionieren.

Wir warten also auf den Code, bzw. vielleicht trifft ja zufällig eine meiner Vermutungen zu.

Eigentlich hatte ich mir ja vorgenommen, auf so unvollständige, nicht beantwortbare Fragen, nicht mehr zu reagieren,
weil irgendwo ist das doch ziemlich ...

Gruß
Thomas

Re: Laden einer Variable bringt fehler

Verfasst: 04.04.2013 16:34
von NeoRon
Ja,
die Variablen sollen sich dann wieder verändern.

Komischerweise bei allen anderen Variablen stimmen die Werte.

Re: Laden einer Variable bringt fehler

Verfasst: 04.04.2013 16:56
von NicTheQuick
NeoRon hat geschrieben:Ja,
die Variablen sollen sich dann wieder verändern.

Komischerweise bei allen anderen Variablen stimmen die Werte.
Zu welcher Frage gehört diese Antwort jetzt? Zu meiner passt es nicht, da ich von Konstanten geredet habe. Ansonsten bin ich hier jetzt auch raus, wenn man von dir nichts zum Testen kriegt.

Re: Laden einer Variable bringt fehler

Verfasst: 04.04.2013 17:07
von NeoRon
Habs hinbekommen.

Lag an dem Komplizierten Speicher und Lade Code.

Man muss die Konstanten beim Laden genau in der gleichen Reihenfolge setzen wie die beim Speichern.

Ist halt nicht so elegant gelöst :)

Danke bin halt noch nen blutiger anfänger xDD

Grüße Neo Ron