![]() |
Anfänger -- constructor problem - klassen V.
Hi
ich hab da eine Klasse namens Tzoom mit dazugehörigen Variabeln die ich gerne benutzen würde:
Delphi-Quellcode:
wenn ich die Variabeln benutzen möchte kann ich dieses nur machen wenn ich im Form1.Activit einer instan z erzeuge:
TZoom = class
level: Integer; Zfaktor: Integer; OriHohe: Integer; OriBreite: integer; Xold: Integer; Yold: integer; MouseLosx: Integer; MouseLosy: Integer; Xa: Integer; Ya: Integer; deltax: Integer; deltay: Integer; anf: Boolean; anfini: Boolean;
Delphi-Quellcode:
ich habe versucht einen constructor zu erschaffen der das gleiche macht aber dann erkennt delfhi die variablen nicht.
procedure TZeichnung.FormActivate(Sender: TObject);
var a,s:string ; i:integer; dbende:integer; MAKO,dbname :string; {Mako = MaschinenKomponente} begin zoom:=Tzoom.create; end; Hier ist das zwar nicht so schlimm aber wenn ich (oop) einen klasse in einer eigenen Unit packe erkennt er keine KL.Variablen ...und das obwohl ich einen construktor gesetzt habe. was muss ich tun damit ich mit diesen variablen arbeiten kann oder versteh ich da was falsch ? dankefür jede antwort ! gruß titus4you |
Re: Anfänger -- constructor problem - klassen V.
Schreib' mal zu deinen Variablen ein
Delphi-Quellcode:
'rein und klicke dann im Kontextmenü auf "Klasse beim Cursor vervollständigen" - vielleicht liegts daran, dass der Konstruktor nicht der Klasse angehört ..
constructor Create; override;
P.S. Herzlich willkommen in der DP :party: |
Re: Anfänger -- constructor problem - klassen V.
Hi,
bei TObject kannst du den constructor Create nicht überschreiben ;)
Delphi-Quellcode:
constructor Create;
constructor TZoom.Create; begin Variable1 := 'blubb'; undsoweiter end; |
Re: Anfänger -- constructor problem - klassen V.
Hallo
erstmal danke für eure Hilfe.Dat mit dem override hat nicht funktioniert da delfi statische klassen nicht überschreiben kann. ich hab einfach mal die unit hier reinkopiert: hier das kleine problem:
Delphi-Quellcode:
ich kann nicht mit lw1.z arbeiten warum nicht was fehlt?? :wall:
unit lw;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Grids, Printers, DBGrids, Mask, DBCtrls, Db, DBTables, ComCtrls; type TLW1 = class z :integer; public Procedure LoadPic(image1:Timage;PicName :string); procedure SuchePic(dir:string; datei :string); constructor Create; end; var LW1: TLW1; root : string; rootErr :boolean; // musste ich global realiesieren da anders ?? Picroot :string; DBRoot:string; picname :string; implementation uses Unit1, Unit7,focus,Unit9,unit4; constructor Tlw1.Create; begin lw1:=lw1.create; lw1.z:=10; //test ob V funktioniert und hier ist der Fehler end; Procedure Tlw1.LoadPic(image1:Timage;PicName :string); begin Image1.picture.loadfromfile(picroot+picname+'.bmp'); lw1.z:=10; // fehler if lw1.z = 10 then Zeichnung.label1.caption:='Variabel Test '; end; Procedure TLW1.SuchePic(dir :string; datei: string); Var rec: TSearchRec; i:integer; dirtemp :string; // hier kann die gesamte Festplatte und alle perf. //durchsucht werden nach einer bestimmten Datei begin dir := IncludeTrailingBackslash(dir); if FindFirst(dir+'*.*',faAnyFile,rec)=0 then Begin repeat //Eintrag ist eine Datei If ((rec.attr And faDirectory) = 0) and (rec.Name[1]<>'.') then if rec.name = datei then begin root:=dir; rooterr:=true; //1 steht für gefunden end; if (rec.Attr and faDirectory = faDirectory) and (rec.Name[1] <> '.') then Begin dirtemp := dir + rec.name; lw1.SuchePic(dirtemp,Datei); //Rekursiv End; until FindNext(rec)<>0; FindClose(rec); End; end; end. danke für jede Hilfe !!! übrigens wer eine veritable Suchfunktion braucht soll sich diese rauskopieren :cheers: liebe grüße titus4you |
Re: Anfänger -- constructor problem - klassen V.
2 Fehler:
Delphi-Quellcode:
;)
lw1:=lw1.create; // Nie, aber auch NIE Object.Create aufrufen !!!!!!
lw1.z:=10; // Hier lwl zu nehmen ... Wenn dann, doch bitte Self.z := 10 |
Re: Anfänger -- constructor problem - klassen V.
Zitat:
:wiejetzt: :-D |
Re: Anfänger -- constructor problem - klassen V.
Hallo :hi:,
Delphi-Quellcode:
MfG
lw1 := Tlw1.Create;
freak |
Re: Anfänger -- constructor problem - klassen V.
Hi,
das ist falsch. Das gibt eine endlosschleife. du creates lwl, dieses erstellt wieder lwl und das wieder lwl, etc. wenn dann so:
Delphi-Quellcode:
// vllt. andere Unit oder so, ka
procedure LWCreate; begin lw1 := TLW1.Create; end; constructor Tlw1.Create; begin z:=10; //test ob V funktioniert und hier ist der Fehler end; |
Re: Anfänger -- constructor problem - klassen V.
Zitat:
hab ich geändert (nebenbei hätte mir das selber auffallen müssen)und lustigerweise hat sich der Fehler jetzt noch unten verschoben und zwar in die klasse lw1.suchpic die von einer anderen klasse aus aufgerufen wird.hier erkennt er die Variable lw1.z oder self.z nicht. muss ich den constructor (vor start) der anderen klassen irgendwie initialisieren damit ich meine variablen von lw1 benutzen kann? danke :duck: |
Re: Anfänger -- constructor problem - klassen V.
hallo nochmal,
ein Blick in die Bücher kann ware Wunder bewirken :mrgreen: probelem gelöst und mein missverständnis ausgeräumt.
Delphi-Quellcode:
das ist die klasse in der ich lw1.suchpic aufrufe und in der und nur in der muss ich den constructor lw1:=Tlw1.create; setzen damit die klasse nicht nur angemeldet wird sondern auch eine instanz erhält auf die dann zugegriffen wird.so das wäre geschafft :drunken:
procedure TZeichnung.FormCreate(Sender: TObject);
begin lw1:=Tlw1.create; zoom:=Tzoom.create; end; jetztmussich mein progumschreibenund damit hab ich genug zu tun :???: danke an alle gruß bis denn |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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