Seite 1 von 1

einfache Ganzzahl

Verfasst: 10.04.2014 23:24
von Fordey_ra
Habe mal eine vielleicht dumme Frage.
Ich lese aus einer Datei eine einfache Ganzzahl aus :

Datensatz.d=ReadAsciiCharacter(1) + 256 * ReadAsciiCharacter(1)

Wie muss der Syntax heißen zum speichern in Purebasic ?

Re: einfache Glanzzahl

Verfasst: 10.04.2014 23:34
von SBond
ähh... ich denke mal WriteAsciiCharacter(). Oder wo soll diese genau gespeichert werden?
Bin auch ein wenig verwirrt, warum du deine Variable als Double deklariert hast, wenn du Integer verarbeiten möchtest.

Ist das bewusst gewählt worden?


gruß,
SBond

Re: einfache Glanzzahl

Verfasst: 10.04.2014 23:50
von NicTheQuick
Glanzzahl? :lol:
Danke für den Lacher. :wink:

Davon abgesehen kannst du auch gleich 'ReadWord(1)' schreiben anstatt das ganze mit zweimal 'ReadAsciiCharacter(1)' zu machen. Bei deiner Version weiß ich auch nicht genau welches 'ReadAsciiCharacter(1)' Purebasic zuerst ausführt. Falls zuerst das hintere ausgeführt wird und dann erst das vordere, kann das zu komischen Fehlern führen.

Re: einfache Ganzzahl

Verfasst: 11.04.2014 09:43
von Fordey_ra
Sorry war schon spät, schon geändert.

Also das Auslesen klappt allerdings prima mit dieser Befehlsfolge.
Ich muss allerdings so wieder speichern weil noch andere Programme auf die Datei zugreifen.

Bitte deshalb um Info, wie ich das mit z.B. WriteAsciiCharacter mache ?

Re: einfache Ganzzahl

Verfasst: 11.04.2014 13:53
von Falko
Speichern in die gleiche Datei?

http://www.purebasic.com/documentation/ ... acter.html

Ansonsten vorher ein Openfile... ,wenn eine andere Datei vorhanden ist, sonst
mit createfile eine neue Datei erstellen, wobei für #File ein anderer Wert als deine 1 angegeben werden
muss (z.B 2). Dann Result = WriteAsciiCharacter(2, Datensatz) und dann closefile.

Re: einfache Ganzzahl

Verfasst: 11.04.2014 14:15
von _sivizius
oder auf:

Code: Alles auswählen

file = ReadFile(-1, FileName$)
If IsFile(file)
  *buffer = AllocateMemory(Lof(file))
  ReadData(file, *buffer, Lof(file))
  CloseFile(file)
  datensatz.d = PeekA(*buffer) + PeekA(*buffer+1)<<8 ; ?! double ?!
  FreeMemory(*buffer)
EndIf

file = OpenFile(-1, FileName$)
If IsFile(file)
  *buffer = AllocateMemory(Lof(file))
  PokeW(*buffer, datensatz)
  WriteData(file, *buffer)
  FreeMemory(*buffer)
  CloseFile(file)
EndIf
ausweichen. Finde ich persönlich schöner, aber deine Ausführungen solltest du vielleicht noch etwas verständlicher machen.