AGB  ·  Datenschutz  ·  Impressum  







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

Eigene Komponente bringt Delhpi zum Absturz

Ein Thema von tobias2207 · begonnen am 4. Mai 2005 · letzter Beitrag vom 19. Aug 2005
Antwort Antwort
tobias2207

Registriert seit: 5. Feb 2005
Ort: berlin
44 Beiträge
 
#1

Eigene Komponente bringt Delhpi zum Absturz

  Alt 4. Mai 2005, 18:50
Hi,

ich habe ein Problem mit meiner selbstgeschriebenen Komponente, welche ich von TComponent abgeleitet habe..

Und zwar habe ich eine StringListe bei der Entwicklung implementiert, welche im Objectinspector für die Entwickler zur verfügung stehen sollte.. leider gibt delphi zahlreiche Exceptions (aus der rtl) , wenn man in der liste was geschrieben hat und diese dann schliesst, aus.. Hier der Code, wo ich denke das die Stringliste einwandfrei erzeugt wird..

bsp:
Delphi-Quellcode:
TTest = class(TComponent)
 private
  fdieListe : TStrings;
 public
  Create(AComponent: TComponent);override;
 published
  property dieListe : TStrings Read fdieListe Write fdieList;
end;

constructor TTest.Create(AComponent: TComponent);
begin
 inherited Create(AComponent);
 fdieListe := TStringList.Create;
 //fdieListe := TStrings.Create - das selbe Problem
end;
Wenn ich das mit ner Bitmap versuche stürzt delphi auch ab wenn ich ein bild geladen hab, und muss das formular löschen wegen dem fehler in der komponente.

Kann mir da jemand bitte weiterhelfen.. vielen dank.

mfg

tobias
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Eigene Komponente bringt Delhpi zum Absturz

  Alt 4. Mai 2005, 19:42
du brauchst eine SetMethode. Denn auf diese Art und weise wird nur der Pointer (TStringlist) gesetzt. So geht es:
Delphi-Quellcode:
TTest = class(TComponent)
private
  fdieListe : TStrings;
  procedure FSetDieListe(AListe: TStringlist);
public
  Create(AComponent: TComponent);override;
published
  property dieListe : TStrings Read fdieListe Write FSetDieListe;
end;

procedure TTest.FSetDieListe(AListe: TStringlist);
begin
  if AListe = nil then
    fdieListe.Clear
  else
    fdieListe.Assign(AListe);
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
tobias2207

Registriert seit: 5. Feb 2005
Ort: berlin
44 Beiträge
 
#3

re: Eigene Komponente bringt Delhpi zum Absturz

  Alt 4. Mai 2005, 20:22
Hi,

ja stimmt,damit sollte ich es mal versuchen. hatte es zwar auch schon mit nem setter versucht, aber assign nicht beachtet. werds gleich mal ausprobieren..


danke für deine hilfe..
  Mit Zitat antworten Zitat
mrmoe

Registriert seit: 15. Jul 2005
13 Beiträge
 
#4

Re: Eigene Komponente bringt Delhpi zum Absturz

  Alt 19. Aug 2005, 13:11
also

Zitat von SirThornberry:
Delphi-Quellcode:
...
property dieListe : TStrings Read fdieListe Write FSetDieListe;
bringt mir immer fehler wegen typunverträglichkeit, ist ja auch klar denn "dieListe ist hier Typ TStrings und die write Aktion "FSetDieListe" braucht Typ TStringList ...

wenn ich allerdings alles nur mit TStrings mache kommt mir immer eine AV bei dem assign in der set-prozedur.
gibts da vielleciht irgnedwo ein funktionierendes beispiel zu ?

ich will in ein objekt mit einer eigenschaft vom typ TStrings die Items einer ComboBox reinkopieren, ein einfaches object.eigenschaft:=combobox.items biegt ja nur den zeiger um
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Eigene Komponente bringt Delhpi zum Absturz

  Alt 19. Aug 2005, 13:18
Zitat von mrmoe:
bringt mir immer fehler wegen typunverträglichkeit, ist ja auch klar denn "dieListe ist hier Typ TStrings und die write Aktion "FSetDieListe" braucht Typ TStringList ...
Dann korrigiere es halt:
procedure FSetDieListe(AListe: TStrings);
Zitat von mrmoe:
wenn ich allerdings alles nur mit TStrings mache kommt mir immer eine AV bei dem assign in der set-prozedur.
gibts da vielleciht irgnedwo ein funktionierendes beispiel zu ?
Auch wenn fdieListe vom Typ TStrings ist mußt du den Konstruktor von TStringList aufrufen. TStrings ist 'ne Abstrakte Klasse und der Compiler sollte doch 'ne Warnmeldung gebracht haben
Delphi-Quellcode:
constructor TTest.Create(AComponent: TComponent);
begin
inherited Create(AComponent);
fdieListe := TStringList.Create;
end;
Zitat von mrmoe:
ich will in ein objekt mit einer eigenschaft vom typ TStrings die Items einer ComboBox reinkopieren, ein einfaches object.eigenschaft:=combobox.items biegt ja nur den zeiger um
Zeiger umbiegen ist nicht. Was passiert wohl wenn deine ComboBox freigegeben wird und du einen Zeiger auf die Stringliste der Compobox hast?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mrmoe

Registriert seit: 15. Jul 2005
13 Beiträge
 
#6

Re: Eigene Komponente bringt Delhpi zum Absturz

  Alt 19. Aug 2005, 13:50
Zitat von Bernhard Geyer:

Delphi-Quellcode:
constructor TTest.Create(AComponent: TComponent);
begin
inherited Create(AComponent);
fdieListe := TStringList.Create;
end;
danke
das war die Lösung, hab den Konstruktor nicht richtig gehabt. jetzt gehts auch mit dem assign als wertmäßige kopie eines TStrings Objekts in ein anderes ohne dass alle auf die selbe Speicheradresse zeigen
  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 08:19 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