/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Procedure
Fra : Henning Madsen


Dato : 29-04-07 20:59

Når jeg laver procedure plaserer jeg dem øverst.
Om det er en korekt måde at gøre det på ved jeg ikke,
men sådan har jeg lært det engang.
Men er det derfor, når der bruges en komponent i
proceduren, at der skal Form1 foran komponentnavnet ellers kan den ikke
kompile ?
Og kan det også være derfor programmet kompiles megt langsomt. ?
Er den korekte måde at implanterer Proceduren i hovedet
vel jeg gerne om der er en der vel vise mig hvor og hvordan
følgende Procedure PROCEDURE Tegn(X,Y:Integer);
skal skrives.
På forhån tak
Mvh
Henning





 
 
Thomas Eg Jørgensen (30-04-2007)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 30-04-07 07:52

"Henning Madsen" <hkjeldm@mail.dk> skrev i en meddelelse
news:4634f726$0$144$edfadb0f@dread11.news.tele.dk...
> Når jeg laver procedure plaserer jeg dem øverst.
> Om det er en korekt måde at gøre det på ved jeg ikke,
> men sådan har jeg lært det engang.
> Men er det derfor, når der bruges en komponent i
> proceduren, at der skal Form1 foran komponentnavnet ellers kan den
> ikke kompile ?
> Og kan det også være derfor programmet kompiles megt langsomt. ?
> Er den korekte måde at implanterer Proceduren i hovedet
> vel jeg gerne om der er en der vel vise mig hvor og hvordan
> følgende Procedure PROCEDURE Tegn(X,Y:Integer);
> skal skrives.
> På forhån tak
> Mvh
> Henning
>

Populært sagt: En "procedure" kender kun til de
procedure/functions/properties/objects som "den er på samme niveau"
med...
Mere teknisk: Hvis du deklarerer en procedure globalt så kender den kun
de andre globale procedurer og objecter(f.eks. din Form1). Hvis du
derimod deklarerer din procedure i Form1's deklaration så kender den
dermed alle procedurer og objecter inde i Form1(herunder f.eks. en TMemo
som du har placeret på din form)...

Omsat til kode:
***************
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
private
{ Private declarations }
public
{ Public declarations }
//Her deklareres proceduren under Form1, ergo er den "på samme
niveau" som Label1 og Label2
procedure Test1;
end;

var
Form1: TForm1;

//Her deklareres procedure på niveau med Form1, dvs den kender ikke
objecter/procedurer som "ligger dybere" end Form1...
//OBS: Denne er ikke nødvendig så længe du kun skal bruge funktionen
inden for samme Unit...Jeg synes dog personligt det er en god ide...
procedure Test2;

implementation

{$R *.dfm}

procedure Form1.Test1;
begin
Label1.Caption:='Dette er en procedure der er deklareret under Form1';
end;

procedure Test2;
begin
Form1.Label2.Caption:='Dette er en "global deklareret" procedure';
end;

end.
**********

Håber det hjælper dig lidt på vej...

MVH
Thomas


Thomas Eg Jørgensen (30-04-2007)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 30-04-07 08:17

.....jeg var for hurtig og overså halvdelen af dine spørgsmål....

"Henning Madsen" <hkjeldm@mail.dk> skrev i en meddelelse
news:4634f726$0$144$edfadb0f@dread11.news.tele.dk...
> Når jeg laver procedure plaserer jeg dem øverst.
> Om det er en korekt måde at gøre det på ved jeg ikke,
> men sådan har jeg lært det engang.
> Men er det derfor, når der bruges en komponent i
> proceduren, at der skal Form1 foran komponentnavnet ellers kan den
> ikke kompile ?
> Og kan det også være derfor programmet kompiles megt langsomt. ?

Nej

> Er den korekte måde at implanterer Proceduren i hovedet
> vel jeg gerne om der er en der vel vise mig hvor og hvordan
> følgende Procedure PROCEDURE Tegn(X,Y:Integer);
> skal skrives.

Gør som min "test1"-procedure...Evt. smid den i "private"....

MVH
Thomas


Uffe Kousgaard (30-04-2007)
Kommentar
Fra : Uffe Kousgaard


Dato : 30-04-07 09:59

"Henning Madsen" <hkjeldm@mail.dk> wrote in message
news:4634f726$0$144$edfadb0f@dread11.news.tele.dk...
> Når jeg laver procedure plaserer jeg dem øverst.
> Om det er en korekt måde at gøre det på ved jeg ikke,
> men sådan har jeg lært det engang.

Det er fordi en procedure / funktion skal være defineret før den kan kaldes.
F.eks. vil følgende fejle:

function dobbeltsum(a,b: integer): integer;
begin
result:= 2*sum(a,b);
end;

function sum(a,b: integer): integer;
begin
result:= a+b;
end;

Den vil fejle fordi sum funktionen ikke er kendt på det tidspunkt, hvor
kompileren når til sum-kaldet. Man kan enten bytte om på rækkefølgen eller
tilføje "function sum(a,b: integer): integer;" i interface delen:

interface

function sum(a,b: integer): integer;

implementation

function dobbeltsum(a,b: integer): integer;
begin
result:= 2*sum(a,b);
end;

function sum(a,b: integer): integer;
begin
result:= a+b;
end;



Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste