Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Anfänger -- constructor problem - klassen V. (https://www.delphipraxis.net/46511-anfaenger-constructor-problem-klassen-v.html)

Titus4you 26. Mai 2005 09:57


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:
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;
wenn ich die Variabeln benutzen möchte kann ich dieses nur machen wenn ich im Form1.Activit einer instan z erzeuge:
Delphi-Quellcode:
procedure TZeichnung.FormActivate(Sender: TObject);
var
a,s:string ;
i:integer;
dbende:integer;
MAKO,dbname :string; {Mako = MaschinenKomponente}

begin
    zoom:=Tzoom.create;
end;
ich habe versucht einen constructor zu erschaffen der das gleiche macht aber dann erkennt delfhi die variablen nicht.
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

jfheins 26. Mai 2005 10:02

Re: Anfänger -- constructor problem - klassen V.
 
Schreib' mal zu deinen Variablen ein
Delphi-Quellcode:
constructor Create; override;
'rein und klicke dann im Kontextmenü auf "Klasse beim Cursor vervollständigen" - vielleicht liegts daran, dass der Konstruktor nicht der Klasse angehört ..

P.S. Herzlich willkommen in der DP :party:

Die Muhkuh 26. Mai 2005 10:31

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;

Titus4you 27. Mai 2005 08:55

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:
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.
ich kann nicht mit lw1.z arbeiten warum nicht was fehlt?? :wall:

danke für jede Hilfe !!! übrigens wer eine veritable Suchfunktion braucht soll sich diese rauskopieren :cheers:

liebe grüße

titus4you

jfheins 27. Mai 2005 09:07

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
;)

Titus4you 27. Mai 2005 09:14

Re: Anfänger -- constructor problem - klassen V.
 
Zitat:

Zitat von jfheins
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
;)

was schreibe ich den dann in den constructor ? und wie rufe ich den dann z in anderen Units auf ??? doch nicht mit self.z ??? oder doch

:wiejetzt: :-D

freak4fun 27. Mai 2005 09:20

Re: Anfänger -- constructor problem - klassen V.
 
Hallo :hi:,

Delphi-Quellcode:
 lw1 := Tlw1.Create;
MfG
freak

Die Muhkuh 27. Mai 2005 09:28

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;

Titus4you 27. Mai 2005 09:31

Re: Anfänger -- constructor problem - klassen V.
 
Zitat:

Zitat von freak4fun
Hallo :hi:,

Delphi-Quellcode:
 lw1 := Tlw1.Create;
MfG
freak

hallo
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:

Titus4you 27. Mai 2005 11:49

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:
procedure TZeichnung.FormCreate(Sender: TObject);
begin
lw1:=Tlw1.create;
zoom:=Tzoom.create;
 
end;
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:

jetztmussich mein progumschreibenund damit hab ich genug zu tun :???:

danke an alle

gruß bis denn


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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