Konvertierung von C zu PureBasic
Code: Alles auswählen
Macro tex_name(Index)
PeekS(?tex_name_img+(Index*4))
EndMacro
Debug tex_name(0)
Debug tex_name(1)
Debug tex_name(2)
Debug tex_name(3)
Debug tex_name(4)
Debug tex_name(5)
DataSection
tex_name_img:
Data.s "so", "mat", "man", "das", "in", "PureBasic"
EndDataSection
Code: Alles auswählen
so
at
an
as
n
reBasic
//Edit:
Öhm, moment mal. Das scheint ein Fehler von PureBasic zu sein.
Funktioniert ohne Probleme. Dein Code macht bei mir aber den selben Mist...
Öhm, moment mal. Das scheint ein Fehler von PureBasic zu sein.
Code: Alles auswählen
Macro tex_name(Index)
PeekS(?tex_name_img+(Index*4))
EndMacro
Debug tex_name(0)
Debug tex_name(5)
DataSection
tex_name_img:
Data.s "so", "macht", "man", "das", "in", "PureBasic"
EndDataSection
das ist zufall, weil der 0-char vor "PureBasic" bei 20 liegt, also einem vielfachen von 4 (sorry bei mir waren die strings etwas anders)
in wirklichkeit liegen die daten so vor:
so0macht0man0das0in0PureBasic0
...wenn du jetzt bei einem vielfachen von vier irgendwo einsteigst, landet er in einem beliebigen string und liest weiter bis zum ersten auftauchenden 0-char.
in wirklichkeit liegen die daten so vor:
so0macht0man0das0in0PureBasic0
...wenn du jetzt bei einem vielfachen von vier irgendwo einsteigst, landet er in einem beliebigen string und liest weiter bis zum ersten auftauchenden 0-char.
stimmt.... das hab ich jetzt erst getestet. Dann ist das eher ne Limitation.
Aber einfach ein @ vor die Strings setzen und dann Data.l drauß machen
geht auch nicht, dann kommt es zu einem "assembler" fehler...
Aber einfach ein @ vor die Strings setzen und dann Data.l drauß machen
geht auch nicht, dann kommt es zu einem "assembler" fehler...
Code: Alles auswählen
---------------------------
PureBasic - Assembler error
---------------------------
PureBasic.asm [372]:
dd "so",0,"macht",0,"man",0,"das",0,"in",0,"PureBasic",0
error: value out of range.
---------------------------
OK
---------------------------
- 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
>>Öhm, moment mal. Das scheint ein Fehler von PureBasic zu sein.
Ist auch falsch, aber von Dir, müßte so aussehen:
Da finde ich mein Macro schöner
Ist auch falsch, aber von Dir, müßte so aussehen:
Code: Alles auswählen
Procedure.s tex_name(Index)
Restore tex_name_img
For I = 1 To Index + 1
Read Text.s
Next
ProcedureReturn Text
EndProcedure
For I = 0 To 5
Debug tex_name(I)
Next
DataSection
tex_name_img:
Data.s "so", "macht", "man", "das", "in", "PureBasic"
EndDataSection
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.

- 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
Wieso, Kaeru hats doch gezeigt, der Rest sind ja nur alternativenreal hat geschrieben:Oh Gott, nein Danke! Dann mach ich's lieber in C, wenn ich in PB nichtmal solch ein dämliches Array vordefinieren kann.
Das gilt aber nur für unflexible Programmierer!real hat geschrieben: Wieder mal ein Beispiel, dass PB nicht universell einsetzbar (und praktikabel) ist.
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.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
außerdem
AUSSERDEM ist das was du in C machst auch nur das erzeugen eines pointers direkt auf deine im code angegebenen daten, also effektiv DASSELBE wie eine eingeschlossene DATA-section in PB, mit dem unterschied, dass man sie in PB nur deshalb nicht diirekt als String-Array nutzen kann, weil ein String-Array in PB eben nicht die strings sondern die pointer zu ihnen enthält.
das einlesen aus einer data-section ist praktisch das selbe.Kaeru Gaman hat geschrieben:in PB musst du die werte aus DATA oder einer Datei einlesen, sofern du sie nicht direkt hinschreiben willst
AUSSERDEM ist das was du in C machst auch nur das erzeugen eines pointers direkt auf deine im code angegebenen daten, also effektiv DASSELBE wie eine eingeschlossene DATA-section in PB, mit dem unterschied, dass man sie in PB nur deshalb nicht diirekt als String-Array nutzen kann, weil ein String-Array in PB eben nicht die strings sondern die pointer zu ihnen enthält.
dem schließe ich mich an. über PB zu meckern, nur weil ein ausgesprochen C-spezifisches Konstrukt keine direkte entsprechung hat, das ist ja *******ts-soft hat geschrieben:Das gilt aber nur für unflexible Programmierer!
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.