AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Anfänger -- constructor problem - klassen V.

Anfänger -- constructor problem - klassen V.

Ein Thema von Titus4you · begonnen am 26. Mai 2005 · letzter Beitrag vom 27. Mai 2005
Antwort Antwort
Titus4you

Registriert seit: 24. Mai 2005
Ort: Wuppertal
7 Beiträge
 
#1

Anfänger -- constructor problem - klassen V.

  Alt 26. Mai 2005, 10:57
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
Hoffnung ist viel zu passiv ... willen muss her !!!
Was keinen Kampf kostet ... taugt nichts.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

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

  Alt 26. Mai 2005, 11:02
Schreib' mal zu deinen Variablen einconstructor 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
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

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

  Alt 26. Mai 2005, 11:31
Hi,

bei TObject kannst du den constructor Create nicht überschreiben

Delphi-Quellcode:
constructor Create;

constructor TZoom.Create;
begin
  Variable1 := 'blubb';
  undsoweiter
end;
  Mit Zitat antworten Zitat
Titus4you

Registriert seit: 24. Mai 2005
Ort: Wuppertal
7 Beiträge
 
#4

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

  Alt 27. Mai 2005, 09:55
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??

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

liebe grüße

titus4you
Hoffnung ist viel zu passiv ... willen muss her !!!
Was keinen Kampf kostet ... taugt nichts.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

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

  Alt 27. Mai 2005, 10:07
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
  Mit Zitat antworten Zitat
Titus4you

Registriert seit: 24. Mai 2005
Ort: Wuppertal
7 Beiträge
 
#6

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

  Alt 27. Mai 2005, 10:14
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

Hoffnung ist viel zu passiv ... willen muss her !!!
Was keinen Kampf kostet ... taugt nichts.
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

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

  Alt 27. Mai 2005, 10:20
Hallo ,

 lw1 := Tlw1.Create; MfG
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#8

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

  Alt 27. Mai 2005, 10:28
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;
  Mit Zitat antworten Zitat
Titus4you

Registriert seit: 24. Mai 2005
Ort: Wuppertal
7 Beiträge
 
#9

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

  Alt 27. Mai 2005, 10:31
Zitat von freak4fun:
Hallo ,

 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
Hoffnung ist viel zu passiv ... willen muss her !!!
Was keinen Kampf kostet ... taugt nichts.
  Mit Zitat antworten Zitat
Titus4you

Registriert seit: 24. Mai 2005
Ort: Wuppertal
7 Beiträge
 
#10

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

  Alt 27. Mai 2005, 12:49
hallo nochmal,

ein Blick in die Bücher kann ware Wunder bewirken

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

jetztmussich mein progumschreibenund damit hab ich genug zu tun

danke an alle

gruß bis denn
Hoffnung ist viel zu passiv ... willen muss her !!!
Was keinen Kampf kostet ... taugt nichts.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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