Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 17.11.2008, 18:00 Titel: Frage zu Pointern |
|
|
Hi
Ich habe ein Programm mit einer verketteten Liste (das Tutorial vom FreeBASIC-Portal) nur als Inhalt keine Integer, sondern Any Ptr, so das ich einen beliebigen Datentyp hinzufügen kann.
Nur wenn ich jetzt ein Element hinzufüge, mit beispielsweise einem Pointer auf einen String, den String ändere und dann das Element auslese, ist da nicht der Text der beim hinzufügen des Elements war, sondern der Text, den ich nach dem hinzufügen eingegeben habe.
Wie kann ich das ändern, so das sich der Text nach dem hinzufügen des Elements nicht ändert (Es sei denn, er soll sich ändern)? |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 17.11.2008, 18:21 Titel: |
|
|
joa... ist ja klar
du übergibst nur den Pointer, also sagst FB, in welcher Schublade der String steckt
wenn du jetzt den echten String in seiner Schublade änderst, ist er anders (logisch ). Er bleibt aber in seiner Schublade. Daher ist auch über den Pointer der neue String in der Schublade...
du müsstest beim Hinzufügen eine Kopie des Strings anlegen, und auf den pointen
sollte mit einer hinzufügen-funktion für verschiedene Datentypen gehen (siehe auch overload). (musst dann mit allocate Speicherplatz der gewünschten größe freiräumen, darauf den ptr setzen, und den alten Wert an *ptr schreiben)
geht "ganz einfach" xD _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 17.11.2008, 18:27 Titel: |
|
|
Flo hat Folgendes geschrieben: |
wenn du jetzt den echten String in seiner Schublade änderst, ist er anders (logisch ). Er bleibt aber in seiner Schublade. Daher ist auch über den Pointer der neue String in der Schublade... |
falsch, beim ändern eines strings variabler länger ändert sich auch gern mal der pointer _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 17.11.2008, 18:34 Titel: |
|
|
Ja, aber was ist wenn ich nicht weis, was das für ein Datentyp ist (z.b eine UDT)? |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 17.11.2008, 18:36 Titel: |
|
|
uhm da findet sich sicher ein weg xD
vlt gibst du der hinzufügen-sub den pointer zu dem ding und seine Größe an (sizeof)... dann kannst du den passenden Platz allocaten und von *ersterPtr sizeof(bla) bytes nach *allocateder_PTR schaufeln. fertig  _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 17.11.2008, 22:51 Titel: |
|
|
Oder nen Enum dazu packen der den Datentyp angibt... |
|
Nach oben |
|
 |
|