Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 04, 2025 16:19

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Pointer
BeitragVerfasst: Mo Dez 30, 2002 00:10 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

hab mal ne Frage...
Ich muß ganz ehrlich zugeben das ich bisher NIE nen Pointer verwendet habe.. :oops:

Deswegen mal eine frage, ein Pointer ist doch eine Variable in der auf eine andere Variable gezeigt wird, ja???

Wenn ich nun eine Variable "MyObject" habe, welche vom Typ ein Record ist, und einen "Array of Pointer".

Verwenden tue ich das so:
Code:
  1. type
  2.  
  3.   TObjects = Record
  4.  
  5.     [...]
  6.  
  7.   end;
  8.  
  9.  
  10.  
  11. var
  12.  
  13.   MyObject: TObjects;
  14.  
  15.   Pointers: Array of Pointer;
  16.  
  17.  
  18.  
  19. procedure Add(Obj: TObjects);
  20.  
  21. begin
  22.  
  23.   SetLength(Pointers,Length(Pointers)+1);
  24.  
  25.   Pointers[High(Pointers)]:= ...
  26.  
  27.   //Hier soll jetzt ein Pointer auf das Objekt welches übergeben wird
  28.  
  29.   //gesetzt werden, wie?
  30.  
  31. end;
  32.  
  33.  
  34.  
  35. procedure Main;
  36.  
  37. var
  38.  
  39.   i: Integer;
  40.  
  41. begin
  42.  
  43.   for i:=Low(Pointers) to High(Pointers) do
  44.  
  45.     Check(Pointers[i]);
  46.  
  47.     // Die Procedure Check verlang als übergabe Parameter ein TObjects!
  48.  
  49. end;


Das ist nur nen grobes beispiel, bitte nich nach dem sinn fragen.. hat hier in dem beispiel keinen *gg*

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 30, 2002 03:09 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 06, 2002 20:27
Beiträge: 479
Wohnort: Bremen
Ja ein Pointer zeigt auf einen bestimmten Speicherbereich der den Inhalt einer Variable (o. Klasse etc) enthält.

Dein Codebespiel scheint soweit in Ordung (es ist spät, ich bin müde und ...) bis auf den aufruf der Check Methode. Du sagst ja selbst, dass hier kein Pointer erwartete wird, sondern die Instanz einer Klasse (TObjects) deshalb kannst du den Pointer auch nicht einfach so übergeben sondern musst ihn vorher dereferenzieren:

Check(Pointers[i]^);

DAS geht aber meines Wissen in deinem Beispiel nciht, da "Pointer" eine Art Allzweck-Zeiger ist, der nicht dereferenzierbar ist.

Dein Quellcode müsste also eher so aussehen:

Code:
  1.  
  2.  
  3. type
  4.  
  5.   TObjects = Record
  6.  
  7.     [...]
  8.  
  9.   end;
  10.  
  11.   
  12.  
  13.   PObjects = ^TObjects; //Ein Zeiger auf Instanzen des Typs TObjects
  14.  
  15.  
  16.  
  17. var
  18.  
  19.   MyObject: TObjects;
  20.  
  21.   
  22.  
  23.   Pointers: Array of PObjects;
  24.  
  25.  
  26.  
  27. procedure Add(Obj: TObjects);
  28.  
  29. begin
  30.  
  31.   SetLength(Pointers,Length(Pointers)+1);
  32.  
  33.   Pointers[High(Pointers)]:= @Obj;
  34.  
  35.   //Hier soll jetzt ein Pointer auf das Objekt welches übergeben wird
  36.  
  37.   //gesetzt werden, wie?
  38.  
  39. end;
  40.  
  41.  
  42.  
  43. procedure Main;
  44.  
  45. var
  46.  
  47.   i: Integer;
  48.  
  49. begin
  50.  
  51.   for i:=Low(Pointers) to High(Pointers) do
  52.  
  53.     Check(Pointers[i]^);
  54.  
  55.     // Die Procedure Check verlang als übergabe Parameter ein TObjects!
  56.  
  57.     // Deshalb wird der Zeiger dereferenziert
  58.  
  59. end;
  60.  
  61.  


Soweit so gut... hilft des überhaupt? Je länger ich drüber nachdenke, desto klarer wird mir, dass ich gar net weiß was du überhaupt fragen wolltest.

Ich geh in Bett... nacht! ;)

_________________
Selber Denken macht klug!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 30, 2002 03:16 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Ja~~ danke, klappt wunderbar :)
Jetzt weiß ich endlich auch wie Pointer funktionieren :oops:

Schlaf gut *winkt*
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]