AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pointer Frage

Ein Thema von DelphiPeter · begonnen am 4. Nov 2010 · letzter Beitrag vom 5. Nov 2010
Antwort Antwort
Seite 1 von 3  1 23      
DelphiPeter

Registriert seit: 21. Dez 2007
Ort: Iserlohn
198 Beiträge
 
Delphi 2010 Professional
 
#1

Pointer Frage

  Alt 4. Nov 2010, 21:35
Hallo Leute

also, ich versuche mich gerade an Zeigern, habe aber eine unklare Situation geschaffen.

Ich möchte als Beispiel, eine Stringliste erstellen, zurückgeben will ich den Zeiger als Integer Wert.
Danach möchte ich in die Stringliste etwas einfügen, habe den Wert den ich einfügen will, und den Zeiger auf die Liste als Integer.

WIE kann ich jetzt die Liste greifen und etwas eintragen?

Mein Versuch:

Delphi-Quellcode:
{...}
var
  zeiger: integer;
  p: pointer;
  strl, mylist: tstringlist;
begin
  strl := tstringlist.Create;
  strl.add('Hallo');
  p := @strl;
  zeiger := Integer(p);
  ShowMessage('Der Zeiger als Nummer: '+IntToStr(zeiger));

  mylist := TStringlist(Pointer(zeiger));
  mylist.Add('Welt!');

  ShowMessage(mylist.Text);
{...}
Peter Majewski
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#2

AW: Pointer Frage

  Alt 4. Nov 2010, 21:36
Nur als Warnung: dieser Code wird nicht mehr funktionieren, sobald Emb. einen 64bit-Compiler rausbringt.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

AW: Pointer Frage

  Alt 4. Nov 2010, 21:40
Nur als Warnung: dieser Code wird nicht mehr funktionieren, sobald Emb. einen 64bit-Compiler rausbringt.
Wir beide wissen, dass das keine größe Einschränkung ist

@Topic: Es ist quasi sinnlos einen Zeiger auf ein Objekt zeigen zu lassen, da eine Objektreferenz bereits ein Zeiger ist.

==>
Delphi-Quellcode:
var
  p: tstringlist;
  strl, mylist: tstringlist;
begin
  strl := tstringlist.Create;
  strl.add('Hallo');
  p := strl;
  ShowMessage('Der Zeiger als Nummer: '+IntToStr(Integer(P)));

  mylist := p;
  mylist.Add('Welt!');

  ShowMessage(mylist.Text);
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#4

AW: Pointer Frage

  Alt 4. Nov 2010, 21:41
Nur als Warnung: dieser Code wird nicht mehr funktionieren, sobald Emb. einen 64bit-Compiler rausbringt.
Wir beide wissen, dass das keine größe Einschränkung ist
In dem Wissen, daß sie daran arbeiten, finde ich es schon sinnlos heute noch Code zu schreiben der nicht vorbereitet ist.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

AW: Pointer Frage

  Alt 4. Nov 2010, 21:49
In dem Wissen, daß sie daran arbeiten, finde ich es schon sinnlos heute noch Code zu schreiben der nicht vorbereitet ist.
Okay, ich bin da auch nicht mehr auf dem Laufenden - welcher Integer-Typ entspricht denn dann dem Pointer?

P.S.: Falls das ganze nur so eine Fingerübung ist, um mal ein wenig mit Pointer zu spielen empfehle ich für diesen Zweck records
  Mit Zitat antworten Zitat
DelphiPeter

Registriert seit: 21. Dez 2007
Ort: Iserlohn
198 Beiträge
 
Delphi 2010 Professional
 
#6

AW: Pointer Frage

  Alt 4. Nov 2010, 22:00
Ich glaube ich muss da weiter ausholen.

Ich arbeite mit einem Script Interpreter, die Verarbeitung von Listen, Dateien und anderen Objekten soll so wie folgt laufen:

Beispiel:
Delphi-Quellcode:
{...}
var list integer

list := ListCreate ()
ListAdd (list, 'mein Eintrag 1')
ListAdd (list, 'mein Eintrag 2')
ListSaveToFile (list, 'C:\MeineListe.txt')
ListFree (list)
{...}
Dafür ist es erforderlich, das ich mittels ListCreate eine Stringliste zur Laufzeit erzeuge, und diese Liste Anhand der "Nummer" - also dem Zeiger - identifizieren und verarbeiten kann.
Peter Majewski
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#7

AW: Pointer Frage

  Alt 4. Nov 2010, 22:04
was spricht gegen

var list Pointer

??
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
DelphiPeter

Registriert seit: 21. Dez 2007
Ort: Iserlohn
198 Beiträge
 
Delphi 2010 Professional
 
#8

AW: Pointer Frage

  Alt 4. Nov 2010, 22:06
Gute Idee, aber ich brauche die Adresse der Liste als Ganzzahl
Peter Majewski
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#9

AW: Pointer Frage

  Alt 4. Nov 2010, 22:15
In dem Wissen, daß sie daran arbeiten, finde ich es schon sinnlos heute noch Code zu schreiben der nicht vorbereitet ist.
Okay, ich bin da auch nicht mehr auf dem Laufenden - welcher Integer-Typ entspricht denn dann dem Pointer?
In Delphi meines Wissens nach keiner. Im PSDK hat man ULONG_PTR und andere *_PTR deswegen eingeführt.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#10

AW: Pointer Frage

  Alt 4. Nov 2010, 22:22
Dann kannst Du ihn wie Du vorhattest (und fast alle es tun) als Integer casten.
gegf. habe wir alle Glück und Pointer werden wie Integer bei D64bit beide 8 Byte lang, dann passts eh wieder.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz