Gamestudio Links
Zorro Links
Newest Posts
Change chart colours
by 7th_zorro. 05/11/24 09:25
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
2 registered members (dr_panther, 1 invisible), 620 guests, and 2 spiders.
Key: Admin, Global Mod, Mod
Newest Members
Hanky27, firatv, wandaluciaia, Mega_Rod, EternallyCurious
19051 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Pointers/Strings #375595
06/26/11 18:38
06/26/11 18:38
Joined: Dec 2002
Posts: 1,999
Switzerland Zürich
JeyKey II Offline OP
Serious User
JeyKey II  Offline OP
Serious User

Joined: Dec 2002
Posts: 1,999
Switzerland Zürich
Ist halt so ne Sache mit den Pointers und TEXT Objekten. Meiner Meinung nach "müssten" beide Variante gehen. Wo liegt der Wurm drin ??


STRING* t1= "JeyKey";
//Variante 1
*Titel.pstring = t1;

//Variante 2
Titel.pstring = &t1;


Beide Varianten zeigen "JeyKey" am Bildschirm.

Beim Schliessen der Engine mit der Variante 2, wird folgende folgende Fehlermeldung angezeigt:
Malfunction W1516
Invalid memory area event


[Jeder ist sich selbst am Nächsten]
Re: Pointers/Strings [Re: JeyKey II] #375604
06/26/11 19:13
06/26/11 19:13
Joined: May 2007
Posts: 2,043
Germany
Lukas Offline

Programmer
Lukas  Offline

Programmer

Joined: May 2007
Posts: 2,043
Germany
pstring ist kein String, sondern ein Array von Strings!
Versuch es mal so:

(Titel.pstring)[0] = t1;

Re: Pointers/Strings [Re: Lukas] #375611
06/26/11 19:54
06/26/11 19:54
Joined: Feb 2011
Posts: 135
Myrkling Offline
Member
Myrkling  Offline
Member

Joined: Feb 2011
Posts: 135
Wenn ich mich nicht irre, enthält pstring keine Nullpointer.
Damit also keine Memory Leaks entstehen, sollte man kopieren anstatt zuweisen:
str_cpy((Titel.pstring)[0], t1);

Re: Pointers/Strings [Re: Lukas] #375672
06/27/11 07:22
06/27/11 07:22
Joined: Dec 2002
Posts: 1,999
Switzerland Zürich
JeyKey II Offline OP
Serious User
JeyKey II  Offline OP
Serious User

Joined: Dec 2002
Posts: 1,999
Switzerland Zürich
Originally Posted By: Lukas
pstring ist kein String, sondern ein Array von Strings!
Versuch es mal so:

(Titel.pstring)[0] = t1;

Ist mir schon klar mit dem Array. Man kann aber auch via pointer auf ein array element zugreifen

Alle 4 Zuweisungen sind identisch (getestet)

STRING* t1= "JeyKey";
(Titel.pstring)[0] = t1; // via index, 1. Element im Array
*((Titel.pstring)+0) = t1; //via Pointer, 1. Element im Array
*(Titel.pstring) = t1; // +0 kann man weglassen beim 1. Element
*Titel.pstring = t1; // Klammern können nun auch weggelassen werden

Das selbe mit
str_cpy((Titel.pstring)[0], t1);
str_cpy(*((Titel.pstring)+0), t1);
str_cpy(*(Titel.pstring), t1);
str_cpy(*Titel.pstring, t1);



Also, an funktionierenden Lösungen fehlt es mir nicht. Bin nur programiertechnisch interessiert.
Mir ist doch noch nicht ganz klar, dass

Titel.pstring = &t1;

erst beim Schliessen der Engine eine FehlerMeldung bringt.
Während dem Ausführen des Progammes, das erwartete Ergebnis geliefert wird ?

Last edited by JeyKey II; 06/27/11 08:28.

[Jeder ist sich selbst am Nächsten]
Re: Pointers/Strings [Re: JeyKey II] #375707
06/27/11 13:50
06/27/11 13:50
Joined: May 2007
Posts: 2,043
Germany
Lukas Offline

Programmer
Lukas  Offline

Programmer

Joined: May 2007
Posts: 2,043
Germany
Myrkling hat Recht mit dem str_cpy.

Ja, man kann in C und verwandten Sprachen über viele Methoden auf Arrays zugreifen, aber meistens macht nur eine Sinn.

Bei der Variante Titel.pstring = &t1; weist du pstring einen Pointer auf einen String-Pointer zu, keinen Array. Das macht keinen Unterschied wenn man den Array lesen will, solange man annimmt, dass nur ein Objekt im Array gespeichert ist.

Der Absturz kommt ziemlich sicher genau dann, wenn die Engine den Text löschen will. Probier doch mal aus, ob es mit ptr_remove auch abstürzt. wink
Das liegt wohl daran, dass du nicht den Inhalt des Arrays, sondern den Array selbst ersetzt hast! Und jetzt versucht die Engine den Array zu löschen, so als ob sie ihn selbst erstellt hat, und das wird eben abstürzen, so wie wenn du einfach so free(t1); schreiben würdest.

Re: Pointers/Strings [Re: Lukas] #375737
06/27/11 17:02
06/27/11 17:02
Joined: Dec 2002
Posts: 1,999
Switzerland Zürich
JeyKey II Offline OP
Serious User
JeyKey II  Offline OP
Serious User

Joined: Dec 2002
Posts: 1,999
Switzerland Zürich
STRING* t1= "JeyKey";
Titel.pstring = &t1;
free(t1);

free(t1) zeigt keinen Effekt.

Die Frage nun, ist
Titel.pstring = &t1;
überhaupt "legal"? Soll ich da mal bei JCL anklopfen?

Einen Anwendung sehe ich darin, "Sprachauswahl"
je nach gewählter Sprache übergebe ich Titel.pstring die Adresse dess entsprechenden arrays sprich "Sprachsatz"



[Jeder ist sich selbst am Nächsten]
Re: Pointers/Strings [Re: JeyKey II] #375739
06/27/11 17:15
06/27/11 17:15
Joined: Apr 2007
Posts: 3,751
Canada
WretchedSid Offline
Expert
WretchedSid  Offline
Expert

Joined: Apr 2007
Posts: 3,751
Canada
Ist nicht legal, du erstellst absichtlich einen leak indem du den eigentlichen Array wegwirfst. Nimm str_cpy() für Strings die dir nicht gehören!


Shitlord by trade and passion. Graphics programmer at Laminar Research.
I write blog posts at feresignum.com
Re: Pointers/Strings [Re: JeyKey II] #375744
06/27/11 17:37
06/27/11 17:37
Joined: Dec 2002
Posts: 1,999
Switzerland Zürich
JeyKey II Offline OP
Serious User
JeyKey II  Offline OP
Serious User

Joined: Dec 2002
Posts: 1,999
Switzerland Zürich
Besten Dank an alle


[Jeder ist sich selbst am Nächsten]

Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1