![]() |
Selbst Gelöst: Übergabe eines TPictures an class funzt nicht
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:
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...
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 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:
Also:
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... 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 |
Re: Übergabe eines TPictures an class funzt nicht
Ä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() :) |
Re: Übergabe eines TPictures an class funzt nicht
Aua... Fehler...
![]()
Delphi-Quellcode:
An img_1 sollte sich was ändern, is aber noch nicht eingebaut^^... also ne
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; geht das sonst noch irgwndwie anders? mfg simonrap [edit] "aua", weil ich die boxen voll aufgedreht hatte... daasss war laut^^[edith] |
Re: Übergabe eines TPictures an class funzt nicht
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; |
Re: Übergabe eines TPictures an class funzt nicht
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 :wall: :wall: :wall: naja danke an alle für die hilfe^^ mfg simon |
Re: Selbst Gelöst: Übergabe eines TPictures an class funzt n
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] |
Re: Selbst Gelöst: Übergabe eines TPictures an class funzt n
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] |
Re: Selbst Gelöst: Übergabe eines TPictures an class funzt n
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] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz