String ANHÄNGEN in der Memory

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

String ANHÄNGEN in der Memory

Beitrag von Velindos »

Hallo Leute,

möchte einen String in die Memory geben und weitere Strings anhängen.

Code: Alles auswählen

Codec:
Text$ = "" Speicher null setzen
Text$ + "Neuer String"
Länge = Len(Text$)
PokeS(*Speicherpuffer, Text$ [, Länge [, Flags]])
; ... 
Jetz möchte ich den neuen String anhängen im Puffer
Text$ + "Neuer String"
Länge = Len(Text$)
; Hier die wie komme ich ans Ende des Puffer bzw. wie hänge ich an?
PokeS(*Speicherpuffer, Text$ [, Länge [, Flags]])
;... Am schluss möchte ich den Text auslesen
GesamtText$ = PeekS(*MemoryBuffer ,Len(a.s)+1,#PB_Unicode)
Hat jemand einen Tip!

Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
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

Re: String ANHÄNGEN in der Memory

Beitrag von ts-soft »

Der Sinn und Zweck entzieht sich mir ein wenig, somit ist eine konkrete Hilfe nicht möglich.
In Speicher, in dem Du Sachen pokst, der muß ausreichend gross sein, das diese auch passen.
Also nachlesen: AllocateMemory, ReAllocateMemory und StringByteLength. Der Platz für das
Nullbyte ist ebenso zu berücksichtigen.

Warum überläßt Du das ganze nicht einfach dem Stringmanager?
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
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: String ANHÄNGEN in der Memory

Beitrag von Danilo »

@Velindos:
Schau Dir mal die Funktion CopyMemoryString() an:

Code: Alles auswählen

Speicherpuffer = AllocateMemory(1024)
If Speicherpuffer
    
    puffer = Speicherpuffer
    CopyMemoryString("Erster Text",@puffer)
    
    CopyMemoryString("-Neuer String-")
    
    For i = 0 To 9
        CopyMemoryString(Str(i))
    Next i
    
    CopyMemoryString("-ENDE")
    
    GesamtText$ = PeekS(Speicherpuffer)
    Debug GesamtText$
    
    Debug puffer - Speicherpuffer
EndIf
Beim ersten Aufruf übergibst Du die Adresse einer Variablen in der Dein
Zeiger gespeichert ist. PB aktualisiert diesen Zeiger dann von selbst, so dass
bei weiteren Aufrufen der neue Zeiger genutzt wird.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
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

Re: String ANHÄNGEN in der Memory

Beitrag von ts-soft »

@Danilo
Jetzt hab ich hier endlich auch mal was gelernt :D
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
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: String ANHÄNGEN in der Memory

Beitrag von Velindos »

Hallo Danilo,
besten Dank für deinen Vorschlag, bin gerade dabei mich zu vertiefen!
Zu der Frage von ts-soft um den Ansatz, wäre zu sagen das ich mehre HTML-Strings in einen zusammen fassen möchte, da mir meine jetzige Lösung nicht gefällt. Dies beruht auf das, dass ich die HTML-Zeilen in eine Note$ lade und das sehr langsam ist, besonders weil ich Base64 Bilder dabei habe!
Werde sehen wie ich Danilo Lösung einbaue, bin aber froh das ich eine habe!
Nochmals DANKE!
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Antworten