Memory stückchenweise lesen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Memory stückchenweise lesen

Beitrag von Chimorin »

Genau 4 Byte werden es meines Wissens nicht sein. PeekS() liest immer einen Null-terminierten String, in Dateien kommen öfters 00 vor...
Bild

- formerly known as Bananenfreak -
Benutzeravatar
Darie
Beiträge: 204
Registriert: 14.09.2004 21:51

Re: Memory stückchenweise lesen

Beitrag von Darie »

Ich hab das gleiche Problem wie Armor_2001: ich würde gerne einen Speicherbereich nach einem String durchsuchen und möchte die Adresse haben, an der er beginnt.
CompareMemoryString gibt nur zurück, ob die Strings gleichlang oder unterschiedlich lang sind. Muss ich dafür wirklich immer die gesamte Datei durchlaufen oder kann man sich
das mit einem Trick einfach ersparen?

Darie
Repeat
PureBasic
ForEver
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

Re: Memory stückchenweise lesen

Beitrag von NicTheQuick »

Natürlich musst du die ganze Datei durchlaufen. Im besten Fall braucht man dafür so viele Len(Datei) + Len(Pattern) Schritte, wobei Len(Datei) die Länge der Datei ist und Len(Pattern) die Länge des Musters, was du finden willst. Der Algorithmus, der das kann, nennt sich Knuth-Morris-Pratt-Algorithmus. Der naive Algorithmus ist allerdings leichter zu verstehen und zu implementieren.
Antworten