Konvertierung von C zu PureBasic

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Ich habe in Purbasic noch kein Spiel Programmiert. Nur Serverdienste, Langzeit Datenerfassung, Datenbankenkonvertiereung. etc.
Allso nichts universell einsetzbares
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

ich finde kaeru's erster ansatz ist der treffenste, und für grosse arrays geht's ja auch noch so

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
ts' 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).
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Beitrag von helpy »

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:

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 
cu, helpy


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.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@helpy

yo, man, YOU hit it! 8)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

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
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.

[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.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

DarkDragon hat geschrieben:[EDIT] Mist, ein Tag zu spät.
:lol: :allright:
a²+b²=mc²
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 »

>> [EDIT] Mist, ein Tag zu spät.
Hab auch schon übersehen, das ein Thread aus mehr als einer Seite besteht.. :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
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

ts-soft hat geschrieben: Wieso, Kaeru hats doch gezeigt, der Rest sind ja nur alternativen

Das gilt aber nur für unflexible Programmierer!
Das (und wie) es geht habt ihr gezeigt, und dafür war das "Danke".

Das mit dem unflexiblen Programmierer überles ich mal dezent... :roll:
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

> Das mit dem unflexiblen Programmierer überles ich mal dezent...
Wenn man die Wahrheit nicht vertragen kann....
Bild
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

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.
Antworten