AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Adresse eines dynamischen typisierten Arrays als Parameter

Adresse eines dynamischen typisierten Arrays als Parameter

Ein Thema von Thomas233 · begonnen am 10. Feb 2005 · letzter Beitrag vom 15. Feb 2005
Antwort Antwort
Seite 3 von 3     123
Thomas233

Registriert seit: 20. Feb 2004
Ort: Villach
66 Beiträge
 
Delphi 2005 Personal
 
#21

Re: Adresse eines dynamischen typisierten Arrays als Paramet

  Alt 15. Feb 2005, 11:42
So, ich hab jetzt alle Arrays auf TList-Klassen umgestellt und verwalte die ganzen Pointer ab sofort in den TList-Klassen.
Durch den selben Trick den ich auch schon bei den Arrays angewendet habe, ich deklariere bei der Übergabe eines Parameters an eine Funktion einen Zeiger auf eine Basisklasse übergebe dann aber einen Zeiger auf eine von der Basisklasse abgeleitete Klasse, brauche ich mich gar nicht mehr mit der Casterei herumschlagen. Ist zwar nicht sonderlich objektorientiert, aber immerhin habe ich mir dadurch einigen Aufwand erspart.

Jetzt stellt sich mir nur das folgende Problem:
Da ich bei dem erzeugen einer neuen Klasse diese nicht lokal anlegen darf sondern nur global kann ich bei der Erzeugung nicht ohne Pointer arbeiten.
Ich deklariere nun also einen Pointer auf eine Klasse welcher sich lokal in einer Funktion befindet. Wie muss ich es nun anstellen das der Pointer auf einen für die Klasse reservierten Speicherbereich zeigt und die Klasse auch initialisiert wurde (d.h. der Konstruktor müsste auch aufgerufen werden) ?

Vielen Dank im Vorraus !

Liebe Grüße,
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#22

Re: Adresse eines dynamischen typisierten Arrays als Paramet

  Alt 15. Feb 2005, 12:11
Also im Grunde so etwas: (?)
Delphi-Quellcode:
procedure GenerateInstance(Liste: TList);
var
  p: ^TDeineKlasse;
begin
  p^ := TDeineKlasse.Create;
  Liste.Add(Pointer(p));
end;
(in etwa - kann leicht anders sein...)

Du brauchst an sich dafür keinen lokalen Pointer, sondern kannst die Instanzerzeugung im Add machen:
Delphi-Quellcode:
procedure GenerateInstance(Liste: TList);
begin
  Liste.Add(TDeineKlasse.Create);
end;
Sinn kann es aber dann machen, wenn du vor dem Hinzufügen zur Liste noch mit der Instanz hantierst.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Thomas233

Registriert seit: 20. Feb 2004
Ort: Villach
66 Beiträge
 
Delphi 2005 Personal
 
#23

Re: Adresse eines dynamischen typisierten Arrays als Paramet

  Alt 15. Feb 2005, 19:39
Hmm....klappt nicht:

Delphi-Quellcode:
var Model:^TD3DXmodel;

Model^:=TD3DXModel.Create(D3DEngine.D3d9Device);

Model^.Tuwas;
//Zugriffsverletzung !
Vielen Dank im Vorraus !

Liebe Grüße,
Thomas
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#24

Re: Adresse eines dynamischen typisierten Arrays als Paramet

  Alt 15. Feb 2005, 20:07
Klar geht das nicht, du musst dir noch Speicher für deine Objektreferenz anfordern (mit New).
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Thomas233

Registriert seit: 20. Feb 2004
Ort: Villach
66 Beiträge
 
Delphi 2005 Personal
 
#25

Re: Adresse eines dynamischen typisierten Arrays als Paramet

  Alt 15. Feb 2005, 21:37
Achso, danke, genau DAS wollte ich wissen.

Thx nochmal !

Liebe Grüße,
Thomas
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf