Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Timer aufeinmal unbekannt (https://www.delphipraxis.net/104826-timer-aufeinmal-unbekannt.html)

k4ni 11. Dez 2007 14:20


Timer aufeinmal unbekannt
 
Hey leute,

Ich have folgendes problem:
Ich hab das hier, was bis jetzt immer in einem timer stand:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
 DCanvas: TCanvas;
 DHandle: HDC;
begin
 DHandle:=GetDC(0);
 if DHandle<>0 then
 begin
   try
     DCanvas:=TCanvas.Create;
     try
     DCanvas.Handle:=DHandle;
     if DCanvas.Pixels[293, 335] = RGB(239, 239, 239 )
       then
       begin
       Timer1.Enabled := false;
       Timer2.Enabled := false;

       Label4.Caption := inicurrent;
       Label4.Visible := true;
       Label5.Visible := true;


       Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'LastPin_CorrectPin.txt');
       Ini.WriteString('rCracker', 'Correct Pin', inicurrent);

       if Checkbox1.Checked = true then
       PlaySound(PChar('logged.wav'),0,SND_ASYNC or SND_LOOP);
       
       ShowMessage ('yupp');
       PlaySound(nil,0,0);
        end
     finally
       DCanvas.Free;
     end;
    finally
      if ReleaseDc(0, DHandle)<>1 then
        RaiseLastOSError;
    end;
 end
 else
   RaiseLastOSError;
end;
Doch ich will das jetzt anders machen und zwar so:
Den timer löschen und ne eigene procedure draus machen, also:
Delphi-Quellcode:
procedure logcheck();
var
 DCanvas: TCanvas;
 DHandle: HDC;
begin
 DHandle:=GetDC(0);
 if DHandle<>0 then
 begin
   try
     DCanvas:=TCanvas.Create;
     try
     DCanvas.Handle:=DHandle;
     if DCanvas.Pixels[293, 335] = RGB(239, 239, 239 )
       then
       begin
       Timer2.Enabled := false;

       Label4.Caption := inicurrent;
       Label4.Visible := true;
       Label5.Visible := true;


       Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'LastPin_CorrectPin.txt');
       Ini.WriteString('rCracker', 'Correct Pin', inicurrent);

       if Checkbox1.Checked = true then
       PlaySound(PChar('logged.wav'),0,SND_ASYNC or SND_LOOP);
       
       ShowMessage ('Eingeloggt, Pin ist: '+inicurrent);
       PlaySound(nil,0,0);
        end
     finally
       DCanvas.Free;
     end;
    finally
      if ReleaseDc(0, DHandle)<>1 then
        RaiseLastOSError;
    end;
 end
 else
   RaiseLastOSError;
end;
Also damit ich das dann per button einfach mit LogCheck() durchführen kann. Doch aufeinamal sagt delphi:
Code:
[Error] Main.pas(138): Undeclared identifier: 'Timer2'
Obwohl diese timer immernoch da ist, woran kann das liegen?

[edit=SirThornberry]code-Tags durch delphi-Tags ersetzt - Mfg, SirThornberry[/edit]

Luckie 11. Dez 2007 14:24

Re: Timer aufeinmal unbekannt
 
Deine Prozedur ist keine Methode deiner Form-Klasse. Die Timer Variable, und auch die anderen Komponenten Variablen, sind ist deshalb unbekannt.

k4ni 11. Dez 2007 14:25

Re: Timer aufeinmal unbekannt
 
Ok :) Danke für die schnelle antwort.
Wie sollte ich es dann machen?

DP-Maintenance 11. Dez 2007 14:26

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Sonstige Fragen zu Delphi" nach "Object-Pascal / Delphi-Language" verschoben.

DeddyH 11. Dez 2007 14:29

Re: Timer aufeinmal unbekannt
 
Delphi-Quellcode:
procedure TForm1.logcheck();
Und im private-Abschnitt von Form1 procedure logcheck(); deklarieren.

Neutral General 11. Dez 2007 14:32

Re: Timer aufeinmal unbekannt
 
Zitat:

Zitat von DeddyH
Delphi-Quellcode:
procedure TForm1.logcheck();
Und im private-Abschnitt von Form1 procedure logcheck(); deklarieren.

oder:

in der logcheck-procedure auf den Timer so zugreifen:

Delphi-Quellcode:
Form1.Timer2...
Wobei die erstgenannte Möglichkeit aber die bessere ist.

SirThornberry 11. Dez 2007 14:37

Re: Timer aufeinmal unbekannt
 
Zitat:

Zitat von Neutral General
Zitat:

Zitat von DeddyH
Delphi-Quellcode:
procedure TForm1.logcheck();
Und im private-Abschnitt von Form1 procedure logcheck(); deklarieren.

oder:

in der logcheck-procedure auf den Timer so zugreifen:

Delphi-Quellcode:
Form1.Timer2...

:shock: Bloß nicht! Er arbeitet mit Klassen/Objecten (TForm1) und soll plötzlich mit globalen arbeiten?! Wenn man mit globalen arbeiten will kann man auch gleich die Klassen weg lassen. Aber ein mix aus beiden muss nun wirklich nicht sein.

DeddyH 11. Dez 2007 14:40

Re: Timer aufeinmal unbekannt
 
Das sehe ich genauso. Man muss ja nicht Mist machen, nur weil es möglich ist ;)

Neutral General 11. Dez 2007 14:47

Re: Timer aufeinmal unbekannt
 
Zitat:

Zitat von Neutral General
Wobei die erstgenannte Möglichkeit aber die bessere ist.

;)

Ich wollte eben sagen das es auch anders möglich ist. Denn das Prinzip bzw. die Logik dahinter sollte man trotzdem verstehen finde ich.

SirThornberry 11. Dez 2007 14:53

Re: Timer aufeinmal unbekannt
 
Zitat:

Zitat von Neutral General
Zitat:

Zitat von Neutral General
Wobei die erstgenannte Möglichkeit aber die bessere ist.

;)

Ich wollte eben sagen das es auch anders möglich ist. Denn das Prinzip bzw. die Logik dahinter sollte man trotzdem verstehen finde ich.

Ok, unter beachtung dessen ist es vertretbar. Ansonsten vetrete ich die Meinung das man dinge die falsch sind lieber vorenthalten sollte.

Ich bekomme schon regelmäßig die Kriese wenn ich Beispiele mit globalen lese wo drauf verwiesen wird das es im Buch "Programmieren für Kids" so gezeigt wird. Da wird doch nicht wirklich Anfängern gezeigt wie man es falsch macht :cry:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 Uhr.
Seite 1 von 2  1 2      

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