Wie komm ich an die Daten von ReadData() ran?

Anfängerfragen zum Programmieren mit PureBasic.
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Wie komm ich an die Daten von ReadData() ran?

Beitrag von Gamer »

Code: Alles auswählen

ReadFile(0,"text.txt")
len = 32
*mem = AllocateMemory(len)
ReadData(*mem,len)
Verstehe nicht, warum ich das in den Speicher laden muss?!

Wie komm ich denn wieder an die Daten ran?

Wieso kann man das nicht einfach in einen String lesen?
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Kannst du doch??? blubb$ = ReadString() ??? Und wenn du an die Daten willst: blubb$ = PeekS(*mem)
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

[c]ReadData()[/c] ist eigentlich für binäre Daten gedacht und nicht für Strings. Mit [c]ReadString()[/c] kannst du ja keine Daten, die ein Nullbyte (Chr(0)) enthalten einlesen. Deswegen gibt es [c]ReadData()[/c].

Ansonsten kannst du es natürlich auch so machen:

Code: Alles auswählen

len.l = 32
String.s = Space(len)
ReadData(@String, len)
Debug String
Dann hast du einen 32-Zeichen langen String eingelesen und in [c]String.s[/c] gespeichert.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Und man sollte immer Abfragen mit einbauen:

Code: Alles auswählen

If ReadFile(0,"text.txt")
len = 32
*mem = AllocateMemory(len)
If *mem <> 0
  ReadData(*mem,len) ;Gibt das auch was zurück? o_O
  Debug PeekS(*mem)
EndIf
CloseFile(0)
EndIf
Oder die ReadString Methode:

Code: Alles auswählen

If ReadFile(0,"text.txt")
Debug ReadString()
CloseFile(0)
EndIf
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten