Datei auslesen/Daten hinzuschreiben

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
pede
Beiträge: 90
Registriert: 08.07.2007 20:37
Wohnort: brixen / Italien

Datei auslesen/Daten hinzuschreiben

Beitrag von pede »

Hallo

erstmal der Code:

Code: Alles auswählen

#file=1

CreateFile(#file, "C:\logfile.time")
WriteString(#file, "Logfile")
CloseFile(#file)

For i = i To 20
;Datei auslesen
If ReadFile(#file, "C:\logfile.time")
    laenge = Lof(#file) 
    If laenge
        *Speicher = AllocateMemory(laenge)
        ReadData(#file, *Speicher, laenge)
        Inhalt$ = PeekS(*Speicher)
    EndIf
    MessageRequester("Inhalt", Inhalt$)
    CloseFile(#file)
Else
    MessageRequester("Fehler", "Logfile konnte nicht gefunden werden. Starten Sie die Anwendung bitte erneut", #MB_ICONERROR)
    End
EndIf
              
;Neuen Inhalt dazuschreiben              
If OpenFile(#file, "C:\logfile.time")
    WriteStringN(#file, Str(Random(60)) + Chr(58) + Str(Random(60)) + Chr(58) + Str(Random(60)))
    WriteString(#file, Inhalt$)            
    CloseFile(#file)
Else
    MessageRequester("Fehler", "Logfile konnte nicht gefunden werden. Starten Sie die Anwendung bitte erneut", #MB_ICONERROR)
    End
EndIf

Next
Problem an der Sache: es werden auch andere Zeichen als gewünscht dazugeschrieben, und zwar nach "Logfile"

Die Datei besteht dann z.b aus folgenden Inhalt:
13:21:43
30:24:33
8:5:60
30:58:45
39:25:0
59:27:17
45:6:17
20:10:6
17:59:24
23:13:34
7:47:28
45:49:14
14:50:37
55:18:24
11:41:32
53:53:19
31:37:7
36:42:58
37:28:35
15:52:14
48:55:1
Logfile*íÀ‡
wobei auch die letzten Zeichen immer variieren...

PS: Ein FreeMemory verschlimmert die Sache noch --> es werden noch mehr sinnlose Zeichen angehängt
Wieso???

lg
"oh... ein Sarkasmus-Detektor... ein wirklich nützliches Gerät" .. dit.. dit.. ditditdit.. *bumm*
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Beitrag von hjbremer »

es muß heißen : Inhalt$ = PeekS(*Speicher,laenge)

siehe Hilfe für Peeks
Der String sollte mit einem '0' Zeichen enden (null-terminierter String), andernfalls wird der Speicher solange ausgelesen, bis ein '0' Zeichen auftritt.

Ein optionaler Parameter 'Laenge' (in Character) kann angegeben werden.
Also in diesem Fall ist der Parameter nicht optional, sondern muß sein. :mrgreen:
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Antworten