Speicherbereich mit Werten füllen ...

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Speicherbereich mit Werten füllen ...

Beitrag von PureLust »

Gibt es einen PB-Befehl, um einen Speicherbereich sehr schnell mit einem bestimmten Long-Wert zu füllen?

Bisher konnte ich leider nichts in dieser Richtung finden.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
andi256
Beiträge: 100
Registriert: 06.11.2004 11:23
Computerausstattung: PB 5.30 (x64) Win7
Wohnort: Österreich

Beitrag von andi256 »

PokeL(*SpeicherBuffer, Nummer.l)

aus der Hilfe

Andi256
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

Hallo Andi256, ...

ich hab mich wohl leider etwas missverständlich ausgedrückt.
Ich meinte nicht, einen Long-Wert in einen einzelne 4Byte Speicherbereich zu schreiben, sondern einen Bereich von mehreren KBytes mit diesem Wert zu füllen.

Also sowas wie FillMemoryLong(Startadresse, Länge, Wert.l).
(Denkbar wären natürlich auch: FillMemoryWord() und FillMemoryByte().)

Sowas wäre ja vermutlich recht simpel per Inline-Assembler zu realisieren - nur leider ist mein Assembler seit der Amigazeit sehr eingerostet.
Ganz abgesehen davon, dass das noch der gute alte 68000er ASM war. :|
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Wie wäre es mit FillMemory_()
The FillMemory function fills a block of memory with a specified value.

VOID FillMemory (

PVOID Destination, // pointer to block to fill
DWORD Length, // size, in bytes, of block to fill
BYTE Fill // the byte value with which to fill
);


Parameters

Destination

Points to the starting address of the block of memory to fill.

Length

Specifies the size, in bytes, of the block of memory to fill.

Fill

Specifies the byte value with which to fill the memory block.



Return Values

This function has no return value.
//Nachtrag: Ich sehe gerade, ist ja nur für Byte, du brauchst ja long :freak:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Sylvia
verheiratet<br>1. PureGolf-Gewinner
Beiträge: 487
Registriert: 29.08.2004 09:42
Wohnort: Old Europe

Beitrag von Sylvia »

@PureLust:
Guckst du hier
Basic Pur = PureBasic
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

Oder man guckt im CodeArchiv nach unter Memory. Da sind schon seit
graumer zeit 3 ASM-Procs (.b .w .l) vorhanden.

@ts-soft

FillMemory() scheint nicht zu funzen. Die API scheint von PB nicht
unterstützt zu werden?!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

al90 hat geschrieben:@ts-soft

FillMemory() scheint nicht zu funzen. Die API scheint von PB nicht
unterstützt zu werden?!

Code: Alles auswählen

*MEM = AllocateMemory(8)
FillMemory_(*MEM, 8, 60)
For I = 0 To 7
  Debug PeekB(*MEM + I)
Next
FreeMemory(*MEM)
:wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

Hey hast recht, klappt tatsächlich. :allright:
Ich war etwas iritiert weil jaPBe mir keine Syntax anzeigte und mit F1
die API-Hilfe nicht aufgerufen wurde.
Antworten