AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Pointer auf Klassenvariable, die übergeben wurde, zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

Pointer auf Klassenvariable, die übergeben wurde, zuweisen

Ein Thema von stefan2005 · begonnen am 30. Aug 2004 · letzter Beitrag vom 30. Aug 2004
Antwort Antwort
stefan2005

Registriert seit: 30. Sep 2003
Ort: Puchheim
250 Beiträge
 
Delphi 6 Personal
 
#1

Pointer auf Klassenvariable, die übergeben wurde, zuweisen

  Alt 30. Aug 2004, 14:15
ich habe eine Klasse mit: (stark gekürzt)

TTest = class
X : Integer
[...]
end;

zwei Variablen (davon eine ein Pointer):

Var Test : TTest
TestPointer : ^Pointer;

und eine Procedure:

procedure Zuweisen(xx: TTest);
begin
TestPointer := @xx;
// hier funktioniert der Pointer noch (innerhalb der Procedure)
end;

Die Procedure rufe ich so auf:

[...]
Zuweisen(Test);
// ab hier funktioniert der Pointer nicht mehr !
[...]

Problem:
Die Pointerzuweisung funktioniert nicht richtig !
In der "procedure Zuweisen" kann ich zwar noch fehlerfrei mit dem Pointer und die Klasse zugreifen, aber wenn die Procedure beendet ist und der andere Qualltext fortgesetzt wird, treten Fehler oder falsche Werte auf !

Geht das nicht oder an was liegt es, warum ich keine Pointer auf eine Klasse zuweisen kann, die übergeben wurde ???
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#2

Re: Pointer auf übergebene Klasse zuweisen

  Alt 30. Aug 2004, 14:21
Delphi-Quellcode:
var
TestPointer : Pointer;
//TestPointer : ^Pointer; wäre ein Zeiger auf einen Zeiger
Dann:
Delphi-Quellcode:
procedure Zuweisen(xx: TTest);
begin
  TestPointer := @xx;
end;
Und später:
Delphi-Quellcode:
BlaBla...
if Assigned(TestPointer) //Enthält TestPointer gültige Adresse?
  then TTest(TestPointer).X := 5; // TypeCasting Zeiger als TTest-Objekt
                                  // und Eigenschaft X Wert zuweisen
Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
stefan2005

Registriert seit: 30. Sep 2003
Ort: Puchheim
250 Beiträge
 
Delphi 6 Personal
 
#3

Re: Pointer auf Klassenvariable, die übergeben wurde, zuweis

  Alt 30. Aug 2004, 15:14
Danke

aber warum funktioniert das bei Strings dann nicht ?
also mit:

class TTest
X: String;
end;

und dann:

TTest(TestPointer).X := 'Hallo';

wenn ich dann mit "Label1.Caption := TTest(TestPointer).X;" lese, kommen so "komische" Zeichen !
bei Zahlen gehts einwandfrei !
  Mit Zitat antworten Zitat
paelesoft

Registriert seit: 3. Jul 2004
37 Beiträge
 
Delphi 7 Professional
 
#4

Re: Pointer auf Klassenvariable, die übergeben wurde, zuweis

  Alt 30. Aug 2004, 23:06
Müsste die Procedure Zuweisen nicht so

Delphi-Quellcode:
procedure Zuweisen(var xx : TTest);
begin
  blah....
deklariert sein, da sonst doch IMHO nur der Pointer der lokalen Übergabevariablen "xx"
auf Testpointer geschrieben wird. (Die zudem nach Beendigung der Procedure freigegeben wird).
Wir wollen aber doch den Zeiger auf das Argument oder habe ich mich da getäuscht???
Gruß Erik
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:04 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