Konvertierung von C zu PureBasic
Ich habe in Purbasic noch kein Spiel Programmiert. Nur Serverdienste, Langzeit Datenerfassung, Datenbankenkonvertiereung. etc.
Allso nichts universell einsetzbares
Allso nichts universell einsetzbares
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
ich finde kaeru's erster ansatz ist der treffenste, und für grosse arrays geht's ja auch noch sots' methode mit stringField ist ja nur zum lesen zu gebrauchen, nicht zum schreiben, aber man könnte sie auch zum initialisieren des string arrays verwenden(stringField-macro anstatt dataSection).
Code: Alles auswählen
Dim s.s(5)
For i=0 To 5 : Read s(i) : Next
DataSection
Data.s "wie", "macht", "man", "das", "in", "PureBasic"
EndDataSection
In C (im ersten Beitrag) geht es doch um ein Pointer-Array auf String-Konstanten, oder irre ich mich da.
Ein String-Array in PureBasic entspricht diesem Pointer-Array! Vorteil ist, dass ich in PB sehr leicht auf die Strings zugreifen kann, weil das Array den Datentyp String hat. Mit dem Read aus einer DataSection wird jedoch eine Kopie der Strings angelegt.
Wem ein Pointer-Array auf die Strings in der DataSection reicht, kann das auch so machen:
cu, helpy
Nachtrag: Damit's auch für Unicode funktioniert:
Ein String-Array in PureBasic entspricht diesem Pointer-Array! Vorteil ist, dass ich in PB sehr leicht auf die Strings zugreifen kann, weil das Array den Datentyp String hat. Mit dem Read aus einer DataSection wird jedoch eine Kopie der Strings angelegt.
Wem ein Pointer-Array auf die Strings in der DataSection reicht, kann das auch so machen:
Code: Alles auswählen
Dim *tex_name.Character(5)
*tex_name(0) = ?tex_data
For i=1 To 5
*tex_name(i) = *tex_name(i-1) + MemoryStringLength(*tex_name(i-1))+1
Next
For i=0 To 5
Debug *tex_name(i)
Debug PeekS(*tex_name(i))
Next
DataSection
tex_data:
Data.s "wie", "macht", "man", "das", "in", "PureBasic"
EndDataSection
Nachtrag: Damit's auch für Unicode funktioniert:
Code: Alles auswählen
Dim *tex_name.Character(5)
*tex_name(0) = ?tex_data
For i=1 To 5
*tex_name(i) = *tex_name(i-1) + MemoryStringLength(*tex_name(i-1)) + SizeOf(Character)
Next
For i=0 To 5
Debug *tex_name(i)
Debug PeekS(*tex_name(i))
Next
DataSection
tex_data:
Data.s "wie", "macht", "man", "das", "in", "PureBasic"
EndDataSection
Zuletzt geändert von helpy am 05.07.2006 11:05, insgesamt 2-mal geändert.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Warum es falsch ist? Gucks dir mal an, das gibt "acht" statt "macht" aus, weil es ja im String + 4 geht und nicht die Pointer durchgeht.MVXA hat geschrieben:> Hmm ne, also das ist definitiv falsch.
Warum?
> Ich würds so wie Kaeru_Gaman lösen.
ich z.b. nich.. Wozu array mit werten laden und zeit verschwenden,
wenns schon vorher im speicher stehen kann
[EDIT] Mist, ein Tag zu spät.
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.
- 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
>> [EDIT] Mist, ein Tag zu spät.
Hab auch schon übersehen, das ein Thread aus mehr als einer Seite besteht..
Hab auch schon übersehen, das ein Thread aus mehr als einer Seite besteht..

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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Wie immer hier im Forum:
Wenn jemand (auch nur in bestimmten Teilen) an PB zweifelt oder Alternativen den Vorzug gibt werden manche persönlich. Fakt: die Definition eines simplen Arrays von Char-Pointern ist unter C einfacher als unter PB.
@ts-soft, Kaeru Gaman & MXVA:
Bin ich unflexibel, weil ich mehr als nur PB machen und C in diesem Fall bevorzuge? Oder weil ich nicht Lust habe, meine wertvolle Zeit mit der Konvertierung zu vergeuden? Ich hab wahrgenommen, dass es unter PB in verschiedenen Variationen möglich ist, aber etwas mehr Zeit in Anspruch nehmen würde, als ich investieren will.
Wenn jemand (auch nur in bestimmten Teilen) an PB zweifelt oder Alternativen den Vorzug gibt werden manche persönlich. Fakt: die Definition eines simplen Arrays von Char-Pointern ist unter C einfacher als unter PB.
@ts-soft, Kaeru Gaman & MXVA:
Bin ich unflexibel, weil ich mehr als nur PB machen und C in diesem Fall bevorzuge? Oder weil ich nicht Lust habe, meine wertvolle Zeit mit der Konvertierung zu vergeuden? Ich hab wahrgenommen, dass es unter PB in verschiedenen Variationen möglich ist, aber etwas mehr Zeit in Anspruch nehmen würde, als ich investieren will.