Autor Beitrag
bflegel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 193
Erhaltene Danke: 1

Win XP, Win 7, BS2000
D5
BeitragVerfasst: Mo 12.05.08 09:54 
Hallo,

ich glaube ich sehe gerade den Wald vor lauter Bäumen nicht. Ich möchte folgendes machen:

Es soll nach Klick auf einen Button eine Datei kopiert werden (funktioniert). Danach soll eine weitere Prozedur aufgerufen werden, die das Programm beendet (Aufruf dieser Prozedur funktioniert nicht?!?).

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
uses
...,JCLFileUtils;


type
  TForm1 = class(TForm)
    ...
    Quit1: TMenuItem;
    ...
    procedure Quit1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure umkopieren(datei : string);
    ...


////////////////////////////////////////////

procedure TForm1.Quit1Click(Sender: TObject);

begin
  close;
end;

////////////////////////////////////////////

procedure TForm1.umkopieren(datei : string);

begin
  if not FileCopy (datei,pfad+'\datei.txt',true) then
    ShowMessage('datei.txt konnte nicht kopiert werden')
  else
    Quit1Click(sender);        // <-- Fehler: Undefinierter Bezeichner: sender
//    close;                   
end;

////////////////////////////////////////////

procedure TForm1.Button1Click(Sender: TObject);

begin
  umkopieren(pfad + '\doc.txt');
end;

////////////////////////////////////////////


Wie im Code beschrieben erhalte ich beim Kompilieren beim Aufruf "Quit1Click(sender)" die Fehlermeldung: "Undefinierter Bezeichner: Sender". Der Aufruf müsste aber doch richtig sein :gruebel:

Kann mir jemand aus meiner Denkblockade helfen?

bye
bflegel

_________________
I know all the jokes about my name
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mo 12.05.08 10:01 
Hallo!

Sender ist in deiner aktuellen Methode nicht definiert, daher der Fehler. Übergib doch stattdessen einfach nil - du verwendest ja den Sender-Parameter in deinem Quit-Ereignis ohnhin nicht :)

AXMD
Silas
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: Mo 12.05.08 10:01 
Morgen!

Ist doch eigentlich logisch :gruebel: : Wo hast du denn in umkopieren die Variable sender deklariert?

Ich nehme an, du verwendest Quit1Click statt Close, um vor dem Schließen noch Code ausführen zu können. Den würde ich lieber nach OnCloseQuery oder nach OnClose auslagern.

Edit: Mist, einen Tick zu langsam
Edit2: Eigene Funktionen gehören nach private, nicht zu den Eventfunktionen ;)

_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)
bflegel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 193
Erhaltene Danke: 1

Win XP, Win 7, BS2000
D5
BeitragVerfasst: Mo 12.05.08 10:05 
Werds nachher mal ausprobieren.

Einstweilen vielen Dank.

bye
bflegel

_________________
I know all the jokes about my name
Fiete
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 617
Erhaltene Danke: 364

W7
Delphi 6 pro
BeitragVerfasst: Mo 12.05.08 11:04 
Moin bflegel,

statt
ausblenden Delphi-Quelltext
1:
Quit1Click(sender);					

sollte
ausblenden Delphi-Quelltext
1:
Quit1Click(self);					

dir helfen.
Gruß
Fiete

_________________
Fietes Gesetz: use your brain (THINK)
bflegel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 193
Erhaltene Danke: 1

Win XP, Win 7, BS2000
D5
BeitragVerfasst: Mo 12.05.08 16:14 
Ich habe es nun so wie von AXMD vorgeschlagen gemacht. War ja auch logisch: Wo nix deklariert ist, kann auch nix übergeben werden :oops:

Auch den Hinweis von Silas bezüglich private werde ich beherzigen.

@Silas: Den Code kann ich nicht ins OnClose bzw. OnCloseQuery setzen, da er nur durchgeführt werden soll, wenn ich es möchte und nicht generell.

Danke nochmals für Eure Hilfe.

Einen schönen (sonnigen) Nachmittag wünsch ich Euch.

Bye
bflegel

_________________
I know all the jokes about my name