AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Objekte verschwinden bzw. werden überschrieben ??
Thema durchsuchen
Ansicht
Themen-Optionen

Objekte verschwinden bzw. werden überschrieben ??

Ein Thema von delphino · begonnen am 4. Mai 2005 · letzter Beitrag vom 4. Mai 2005
Antwort Antwort
delphino

Registriert seit: 4. Mai 2005
11 Beiträge
 
#1

Objekte verschwinden bzw. werden überschrieben ??

  Alt 4. Mai 2005, 10:28
Hallo !!

Bin neu in Delphi, aber bin mit OOP aus PHP/Java und diversen anderen Script-Sprachen vertraut. Habe schon einige Hilfreiche Threads gelesen hier, aber habe ein Problem bei dem ich noch nicht mal weiß wonach ich suchen soll. Also falls es zu meiner Frage schon einen Thread gibt, dann bitte bescheid sagen. =)

Habe eine TForm, die im Constructor mehrere Frames dynamisch erzeugt. Sprich habe ein Array, für jedes Element im Array wird ein Frame erzeugt. Diese Frames werden dann in einem Array abgelegt, dass diese Frames als Typ hat. Nach den instanziieren verschwinden die zuerst instanziierten Objekte irgendwo im Nirvana und das Array hat nur noch das zuletzt instanziierte Objekt in jedem Index. Nein, ich habe nichts beim Befüllen der Schleife falsch gemacht, denn das ganze passiert auch dann, wenn ich folgendes tue:

Delphi-Quellcode:
O1 := TTabFrame1.Create(nil,DBConnect1,1); //TTabFrame1 ist von TFrame abgeleitet. *
ShowMessage(O1.GetFTabRandom); // << gibt 1 aus
O2 := TTabFrame1.Create(nil,DBConnect1,2); //
ShowMessage(O2.GetFTabRandom); // << gibt 2 aus
ShowMessage(O1.GetFTabRandom); // << gibt 2 aus !!!!
ShowMessage(O2.GetFTabRandom); // << gibt 2 aus

//* Der 3. Parameter wird im Contructor in ner Var gespeichert und kann über GetFTabRandom ausgelesen werden.
Hat Delphi vllt so eine Eigenart, dass man Frames oder Units whatever nur einmal instanziieren kann ?? Finde darüber aber nichts in Bücher o.ä.
Das gleiche mit einer selbstdefinierten Klasse funktioniert wunderbar. Nur bei diesen Frames nicht.... o.O

Für Eure Hilfe im Voraus vielen dank...

delphino
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Objekte verschwinden bzw. werden überschrieben ??

  Alt 4. Mai 2005, 10:31
Hallo delphino,

erstmal Herzlich Willkommen.

Ich habe Frames normalerweise in eine TObjectList reingeschrieben und mich dann zu Tode gecastet, aber folgendes Beispiel funktioniert bei mir auch:

Delphi-Quellcode:
var MyFrames: array of TSomeFrame;
//..
SetLength(MyFrames, 5);
for i := 0 to 4 do
  MyFrames[i] := TSomeFrame.Create(Self);
Anschliessend habe ich 5 Frames im Array. Mit einer ObjectList siehts aehnlich aus:

Delphi-Quellcode:
var MyFrames: TObjectList;
//..
for i := 0 to 4 do
  MyFrames.Add(TSomeFrame.Create(Self));
Zeig bitte mal den Code, bei dem du die Frames ins array schreibst.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
delphino

Registriert seit: 4. Mai 2005
11 Beiträge
 
#3

Re: Objekte verschwinden bzw. werden überschrieben ??

  Alt 4. Mai 2005, 14:34
Hi alcaeus,
danke für die schnelle Antwort. Nun, also der Fehler mit dem Überschreiben der Objekte scheint am Übergebenen Owner also dem TComponent zu liegen. Du hattest in Deinen Code-Beispielen immer "Self" dafür verwendet. Ich habe "nil" benutzt. Nun ergibt sich ein Folgefehler, denn nun meckert der Compiler beim befüllen des Arrays, dass eine Komponente mit dem Namen TabFrame1 schon existieren würde. Muss ich nun jedem neuen TabFrame, dass ich instantiiere einen unique Namen zuweisen ?

Gruß

delphino
  Mit Zitat antworten Zitat
delphino

Registriert seit: 4. Mai 2005
11 Beiträge
 
#4

Re: Objekte verschwinden bzw. werden überschrieben ??

  Alt 4. Mai 2005, 15:03
OMG, okay, brutaler Anfängerfehler.

Und zwar hatte ich FTabRandom und den DatenbankHandle etc. unter "var" nach der type deklaration deklariert. Scheinbar sind das bei Delphi dann so ne Art Klassenvariable. Also sowas, was ich in PHP z.b. mit "::" machen würde. Nun bringt er beim Auslesen des Arrays die richtigen Angaben.

Aber der Tip mit "Self" war aber glaube ich trotzdem ganz heiß. Muss mal nachlesen was der Owner überhaupt bringt.

Thx a lot !!!

delphino
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Objekte verschwinden bzw. werden überschrieben ??

  Alt 4. Mai 2005, 15:09
Zitat von delphino:
OMG, okay, brutaler Anfängerfehler.

Und zwar hatte ich FTabRandom und den DatenbankHandle etc. unter "var" nach der type deklaration deklariert. Scheinbar sind das bei Delphi dann so ne Art Klassenvariable.
Das müsste eine Globale Variable sein.

Soweit ich weis, gibt es 3 Geltungsbereiche:
Global (Im gloibalen var Abschnitt)
Klassenvar. (im private (oder anderem) Teil deklariert)
"Prozedurvariablen" zwischen Prozedurkopf und begin.
  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 11:48 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