noch ne Frage zu structs.....

Posted By: JoGa

noch ne Frage zu structs..... - 10/08/11 17:33

hey, ich bin grad auf Fehlersuche und hab ne Frage:

Die Speicheradresse eines Structs kann man ja auch in einer int abspeichern, z.B einem entityskill oder einem array.
Wenn ich nun an anderer Stelle an den Struct ran muss, brauch ich, um im Struct Sachen zu ändern, ja wieder seine Adresse - wie hole ich die mir?

Ich habe es foglender maßen gemacht, bin mir abe rnicht sicher ob das geht:
Code:
gegenstand* zu_speichernden_gegenstand = (gegenstand*) inventar_platz[i];
file_str_write(filehandle,zu_speichernden_gegenstand->str_modell);
// ... weitere file_str_write-Anweisungen



Direkt
Code:
file_str_write(filehandle,(gegenstand*) inventar_platz[i]->str_modell);


mag er nicht.

Reicht es, wenn ich das wie im oberen Code-block mache?
Oder kann das später Fehler geben, weil ich vorher kein sys_malloc benutzt habe?
Aber eig. brauch ich doch kein sys_malloc, weil ich den einen struct nicht in einen neuen kopieren, sondern lediglich die Adresse als struct haben will, die ich dann per file_str_write wieder weiterverwerten kann.

vielen Danke erstmal fürs Durchlesen :-)
Posted By: MasterQ32

Re: noch ne Frage zu structs..... - 10/08/11 18:42

Hey Joga!
Du kannst nicht einfach einen Structpointer in eine Datei schreiben.
Das Programm liegt ja nach einem Neustart an einer völlig anderen Speicheradresse!
1. Du musst ein Struct in eine Datei speichern und nicht blos den Pointer
. Geht eigentlich recht einfach. Jeden Teil des Structs in die Datei schreiben (jeden string, variable, what else)

Um das Struct wieder zu laden, musst du es erst wider von hand erzeugen (sys_malloc) und die daten, die darin sein sollen, wieder aus einer datei lesen.

Für ein Code-Beispiel bin ich jetzt zu faul, aber wenns ohne nicht geht, bekommste eines wink

Gruß Felix
Posted By: JoGa

Re: noch ne Frage zu structs..... - 10/08/11 19:00

äh, genauso mach ich es doch ;-) ich schreib den inhalt in ne Datei von strings, die im struct sind.
Code:
file_str_write(filehandle,zu_speichernden_gegenstand->str_modell);


das hier schreib ich in die datei. Das sind strings. Nicht die Speicheradresse ;-)
Trotzdem Danke für deinen Tipp!

Vielleicht war meine Frage zu ungenau.
Ich wollte wissen, ob dies Zeile Code legitim ist:
Code:
gegenstand* zu_speichernden_gegenstand = (gegenstand*) inventar_platz[i];


mit der ich einen generierten Struct, dessen Adresse ich in einem array abgespeichert hatte, so wieder als Pointer "addressiert" bekommen kann, um ihn dann weiter zu verwenden und abzuspeichern.
Posted By: MasterQ32

Re: noch ne Frage zu structs..... - 10/08/11 19:48

mach doch einfach so:
gegenstand* inventar_platz[64];
da brauchst keinen cast
Posted By: JoGa

Re: noch ne Frage zu structs..... - 10/08/11 19:49

aber wenn ich dann
Code:
file_str_write(filehandle,(gegenstand*) inventar_platz[i]->str_modell);

schreiben will (weil für den file_str_write-Befehl brauch ichs ja, will es nicht geschluckt werden :-/
Posted By: MasterQ32

Re: noch ne Frage zu structs..... - 10/08/11 19:50

file_str_write(filehandle,inventar_platz[i]->str_modell);
du musst deinen string doch nicht in gegenstand* casten!
Posted By: JoGa

[solved] Re: noch ne Frage zu structs..... - 10/08/11 20:02

Fehler wurde durch falsches benutzen von STRING-Pointern und _char- funktion verursacht.
© 2024 lite-C Forums