AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Selbst Gelöst: Übergabe eines TPictures an class funzt nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Selbst Gelöst: Übergabe eines TPictures an class funzt nicht

Ein Thema von SimonRap · begonnen am 4. Mai 2010 · letzter Beitrag vom 4. Mai 2010
Antwort Antwort
Benutzerbild von SimonRap
SimonRap

Registriert seit: 17. Okt 2009
Ort: Mahlow
147 Beiträge
 
Delphi 6 Personal
 
#1

Selbst Gelöst: Übergabe eines TPictures an class funzt nicht

  Alt 4. Mai 2010, 20:28
Hi Leute,
ich hab mir den Kopf zerbrochen, aber ich finde einfach keine Lösung...
Ich habe eine Class:
(alles gekürzt und umbenannt)
Delphi-Quellcode:
type
 Tclass=CLASS
    Img1,Img2,Img3:TPicture;
    Obj:TObject;
    procedure state(n:INTEGER);
    end;
//und die procedure
procedure TClass.state(n:INTEGER);
begin
  case n of
    1:(obj as TImage).Picture:=IMG1;
    2:(obj as TImage).Picture:=IMG2;
    3:(obj as TImage).Picture:=IMG3;
  end;
end;
//und
var xxx:TClass
Ich hab noch 3 TImages, wo win Picture schon drin ist (alle verschiedene bilder) mit den namen z.B. IMG_1,IMG_2,IMG_3...
Und dazu ein leeres TImage: image1 (also leer im sinne von kein image1.picture geladen)
An einer Stelle meines Programmes soll er folgendes tun:
Delphi-Quellcode:
xxx:=TClass.Create;//also das ist eigentlich beim form.create, aber damit ihr wisst, dass es das auch gibt^^
xxx.Img1:=img_1.Picture;
xxx.Img2:=img_2.Picture;
xxx.Img3:=img_3.Picture;
xxx.state(strtoint(edit1.text));
//und noch paar weitere Sachen, aber dazu kommt es eh nicht...
Also:
Als Ergebnis krieg ich immer, dass Image1 kein Bild enthält...
Beim Debuggen merkte ich, dass das Übergeben von img_1 zu xxx.IMG1 schon nicht funktioniert...
Ich finde aber einfach kein Fehler...

kann mir jemand nen Tipp geben, woran das liegen könnte??
MfG Simon
Simon
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Übergabe eines TPictures an class funzt nicht

  Alt 4. Mai 2010, 21:06
Änderst du an den "img_X" irgendetwas nachdem du deren "Picture" an die "xxx.ImgX" zugewiesen hast? Du übergibst hier nämlich nur Referenzen. Für eine richtige Kopie, die sich nicht mit der Quelle mit ändert, versuche mal:
xxx.Img1.Assign(img_1.Picture);
Ich hoffe TPicture implementiert Assign()
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von SimonRap
SimonRap

Registriert seit: 17. Okt 2009
Ort: Mahlow
147 Beiträge
 
Delphi 6 Personal
 
#3

Re: Übergabe eines TPictures an class funzt nicht

  Alt 4. Mai 2010, 22:25
Aua... Fehler...
http://simonrap.square7.ch/delphi/aua.JPG
Delphi-Quellcode:
type
Tclass=CLASS
    Img1,Img2,Img3:TPicture;
    Obj:TObject;
    procedure state(n:INTEGER);
    end;
...
var
  Form1: TForm1;
var xxx:TClass;
...
procedure TClass.state(n:INTEGER);
begin
  case n of
    1:(obj as TImage).Picture:=IMG1;
    2:(obj as TImage).Picture:=IMG2;
    3:(obj as TImage).Picture:=IMG3;
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
xxx:=TClass.Create;//also das ist eigentlich beim form.create, aber damit ihr wisst, dass es das auch gibt^^
xxx.Img1.Assign(img_1.Picture);//hier meckert er
xxx.Img2.Assign(img_2.Picture);
xxx.Img3.Assign(img_3.Picture);
xxx.state(1);
//und noch paar weitere Sachen, aber dazu kommt es eh nicht...
end;
An img_1 sollte sich was ändern, is aber noch nicht eingebaut^^... also ne
geht das sonst noch irgwndwie anders?

mfg simonrap

[edit] "aua", weil ich die boxen voll aufgedreht hatte... daasss war laut^^[edith]
Simon
  Mit Zitat antworten Zitat
Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#4

Re: Übergabe eines TPictures an class funzt nicht

  Alt 4. Mai 2010, 22:34
Also meiner Meinung nach müsstest du erst im constructor von TClass mal die Img's instanzieren.

Delphi-Quellcode:
type
 Tclass=CLASS
    ...
    public
    constructor Create;
    ...
    end;

var
  Form1: TForm1;
var xxx:TClass;
...

constructor TClass.Create;
begin
Img1 := TPicture.Create;
Img2 := TPicture.Create;
Img3 := TPicture.Create;
end;
Philipp F.
  Mit Zitat antworten Zitat
Benutzerbild von SimonRap
SimonRap

Registriert seit: 17. Okt 2009
Ort: Mahlow
147 Beiträge
 
Delphi 6 Personal
 
#5

Re: Übergabe eines TPictures an class funzt nicht

  Alt 4. Mai 2010, 22:40
mist mist mist mist...
ne das war es nicht...
ich sollte ihm vielleicht auch sagen, welches TObject denn xxx.Obj ist..
und die erste fehlermeldung hab ich auch falsch interpretiert.
mist, und mir is das nicht aufgefallen grrrrrr
naja danke an alle für die hilfe^^

mfg simon
Simon
  Mit Zitat antworten Zitat
Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#6

Re: Selbst Gelöst: Übergabe eines TPictures an class funzt n

  Alt 4. Mai 2010, 22:50
Hmm naja ist ja schön, wenn das Problem gelöst ist, aber wenn ich deinen Code 1:1 kopiere (in der Annahme, dass img_1 - img_3 auf dem Form platzierte TImage-Komponenten sind) bekomme ich genau an der Stelle den Fehler, wo du ihn bekommst.

Wenn ich dann meinen Konstruktor einbaue kommt der Fehler erst beim Aufruf der State-Methode

[Edit] Wobei die State-Methode auch scheitern müsste, weil du ja auch Obj benutzt obwohl du es nirgendwo erstellst[/Edit]
Philipp F.
  Mit Zitat antworten Zitat
Benutzerbild von SimonRap
SimonRap

Registriert seit: 17. Okt 2009
Ort: Mahlow
147 Beiträge
 
Delphi 6 Personal
 
#7

Re: Selbst Gelöst: Übergabe eines TPictures an class funzt n

  Alt 4. Mai 2010, 22:54
ok dann ham wir 2 verschiedene compilierer^^
Ich hab den Code 1:1 (klar, is ja auch meiner^^) übernommen, und es funzt wunderbar
[edit jetzt] sogar ohne mediums vorschlag mit dem assign^^[edit aus]
Simon
  Mit Zitat antworten Zitat
Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#8

Re: Selbst Gelöst: Übergabe eines TPictures an class funzt n

  Alt 4. Mai 2010, 22:59
Ich habs mit Delphi 7 gemacht. Und es wundert mich echt.
Ich meine deine Fehlermeldung war eine Zugriffsverletzung die ensteht, wenn man auf ein Objekt zugreift, dass noch nicht erstellt wurde...Komisch.
Naja hauptsache dein Code funktioniert jetzt.

[Edit]
Klar, so wie dus jetzt machst (mit Zuweisung über := statt mit Assign) gehts natürlich. Das steht aber so nicht oben
[/Edit]
Philipp F.
  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 16:33 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