Avatar billede alex253 Nybegynder
29. december 2003 - 11:52 Der er 13 kommentarer

Hvorfor gør den det

Hej.
Jeg er lige startet med Delphi og har et spørgsmål:

Hvorfor skriver den fejl i det her... den skriver fejl ved det sidste "end."

procedure TForm1.Button1Click(Sender: TObject);
begin
    If messagedlg('Vil du lukke nu???', mtinformation, [mbYes, mbNo],0)= mrYes Then
begin
    Application.Terminate;
end;

end.
Avatar billede Slettet bruger
29. december 2003 - 11:54 #1
Du mangler et end; prøv det her:

procedure TForm1.Button1Click(Sender: TObject);
begin
    If messagedlg('Vil du lukke nu???', mtinformation, [mbYes, mbNo],0)= mrYes Then
begin
    Application.Terminate;
end;
end;
Avatar billede erikjacobsen Ekspert
29. december 2003 - 11:56 #2
Eller du har et begin for meget ;)

procedure TForm1.Button1Click(Sender: TObject);
begin
    If messagedlg('Vil du lukke nu???', mtinformation, [mbYes, mbNo],0)= mrYes Then
      Application.Terminate;
end;

end.
Avatar billede baxos Nybegynder
31. december 2003 - 01:19 #3
skal det spm ikke lukkes da de har besvarede dit spm og det virker jo :p
Avatar billede hrc Mester
11. januar 2004 - 15:47 #4
I øvrigt bør du sætte koden ind i formens OnCloseQuery hvor den hører hjemme.

Hvorfor bruger du "application.Terminate" når der findes "Close"? Det er der mange der gør og jeg undrer mig hvorfor.

procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := messagedlg('Vil du lukke nu???', mtinformation,
                        [mbYes, mbNo],0)= mrYes;
end;
Avatar billede jaweni Nybegynder
17. januar 2004 - 04:05 #5
hejhej,

Der er ikke nogen forskel på Alex253´kode og dit forslag.
Der er kun et linieskift til forskel.

erikjacobsen svarede, at der var et BEGIN for meget og
det er rigtigt.

procedure TForm1.Button1Click(Sender: TObject);
begin
  If messagedlg('Vil du lukke nu???', mtinformation, [mbYes, mbNo],0)= mrYes Then begin
    Application.Terminate;
end;

end.  { end.  end med punktu afslutter programkoden i Delphi }




procedure TForm1.Button1Click(Sender: TObject);
begin
  If messagedlg('Vil du lukke nu???', mtinformation, [mbYes, mbNo],0)= mrYes Then
    Application.Terminate;
end;
end.
Avatar billede jaweni Nybegynder
17. januar 2004 - 04:24 #6
Ja, det sidste jeg skrev, var noget vrøvl.
Hvad erikjabobsen sagde var rigtigt. Et stk.
for meget BEGIN.

BEGIN før linien:
    Application.Terminate;
skal slettes.
Avatar billede Slettet bruger
17. januar 2004 - 10:00 #7
jawani ->

procedure TForm1.Button1Click(Sender: TObject);
begin
    If messagedlg('Vil du lukke nu???', mtinformation, [mbYes, mbNo],0)= mrYes Then
begin
    Application.Terminate;
end;
end; <-- Den her er ny ;)
Avatar billede hrc Mester
17. januar 2004 - 10:59 #8
Der er stadig ikke nogen der har begrundet for mig, hvorfor de benytter application.terminate fremfor close.

... men det kan være lige meget hvis man nu gør som jeg foreslår, benytter formens OnCloseQuery i stedet. Husk at sætte "lukke-knappen" til at returnere mrOK eller lignende.
Avatar billede jaweni Nybegynder
05. november 2005 - 02:38 #9
Hej hcr,

Application.Terminate rydder op i de variabler man har gjort brug af.
Close gør ikke "rengøringsarbejdet".
Avatar billede hrc Mester
08. november 2005 - 15:44 #10
Den kan jeg ikke købe - må hjem og kigge lidt i VCL'en for at se om ikke application.terminate. Alle forme ryddes op når de lukkes.

Kan simpelthen ikke tro at der findes to lukkevarianter:
1. Luk formen og lad være med at rydde op
2. Luk formen og ryd op

Hvis ikke Delphi konsekvent bruger den sidste er programmeringssproget noget lort og det ville efterlade mig ret desillusioneret!

Fandt i øvrigt dette link der giver en mere sandsynlig beskrivelse af hvad der foregår:

  http://www.cpcug.org/user/clemenzi/technical/Languages/ProgramExit.htm

Vil derfor argumentere for at application.terminate kun bruges i forbindelse med fejlbehandling hvor en fejl kræver at programmet lukkes prompte.

I øvrigt har du ikke svaret på tråden jaweni, kun på mit spørgsmål.
Avatar billede jaweni Nybegynder
25. marts 2010 - 16:52 #11
Hej,

er ved at rydde op i gamle
spørgsmål for at give point,
så dem får du.
Avatar billede hrc Mester
25. marts 2010 - 18:28 #12
Er det mig du mener?
Avatar billede jaweni Nybegynder
19. august 2010 - 16:08 #13
Hej hcr,

undskyld, at jeg ikke reagerer før nu;
men det var dig, jeg mente.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester