|
| Egne funktioner? Fra : Steffen V Petersen |
Dato : 08-12-02 19:00 |
|
Hej igen
Det er vist blevet lidt af en vane at stille spørgsmål til Jer, men I er
jo så go'e :)
Denne gang vil jeg gerne vide, hvorfor der her ikke virker:
function Test(Str: String): Boolean;
begin
Edit1.Text := Str;
end;
Den siger, at Edit1 er ikke er deklareret... og det fatter jeg ikke
rigtigt.
Hvad er forresten forskellen på function og procedure?
Jeg bruger Delphi 7.
--
Steffen V Petersen
Remove remove.
| |
JM (08-12-2002)
| Kommentar Fra : JM |
Dato : 08-12-02 19:46 |
|
Dette ligner vist Delphi 7 - for jeg forstår ikke et muk.
| |
Peter Vrist (08-12-2002)
| Kommentar Fra : Peter Vrist |
Dato : 08-12-02 19:20 |
|
Problemet er at du ikke har deklareret din function i samme klasse.
For at få din funktion til at virke skal du skrive "Form1.Edit1.Text" i
stedet for "Edit1.Text".
Jeg kan anbefale at du deklarere din funktion under f.eks. private. Din
function skal da se således ud :
function Form1.Test(Str: String): Boolean;
begin
Edit1.Text := Str;
end;
Her har du dog ikke noget at bruge en funktion til, da den ikke skal
retunere noget. En procedure havde været bedre. F.eks:
procedure Form1.Test(Str: String);
begin
Edit1.Text := Str;
end;
Køb dig en lærebog. Det fortryder du ikke.
Vedrørende dit andet spørgsmål:
En funktion returnere altid en værdi. Værdien er Result i funktionen, f.eks.
function biggest(x : Integer; y : Integer) : Integer;
begin
Result := Max(x, y);
end;
st := Biggest(100, 200);
//st = 200.
Hilsen
Peter Vrist
"Steffen V Petersen" <news01@swipe.remove.dk> skrev i en meddelelse
news:at01a5$j99$1@sunsite.dk...
> Hej igen
>
> Det er vist blevet lidt af en vane at stille spørgsmål til Jer, men I er
> jo så go'e :)
>
> Denne gang vil jeg gerne vide, hvorfor der her ikke virker:
> function Test(Str: String): Boolean;
> begin
> Edit1.Text := Str;
> end;
>
> Den siger, at Edit1 er ikke er deklareret... og det fatter jeg ikke
> rigtigt.
>
> Hvad er forresten forskellen på function og procedure?
>
> Jeg bruger Delphi 7.
>
> --
> Steffen V Petersen
> Remove remove.
>
>
| |
Steffen V Petersen (08-12-2002)
| Kommentar Fra : Steffen V Petersen |
Dato : 08-12-02 21:41 |
|
> Jeg kan anbefale at du deklarere din funktion under f.eks. private.
Din
> function skal da se således ud :
Mener du private under inteface, for det virker heller ikke :(
> procedure Form1.Test(Str: String);
> begin
> Edit1.Text := Str;
> end;
Er prøvet... Hvis den står under private (i inteface) siger den nu bare:
Undeclared identifyer: Form1
> Køb dig en lærebog. Det fortryder du ikke.
Ville jeg skam gerne, men det kun som valgfag på gym jeg har det, så at
spendere knaster på en bog her op til jul, holder en SU ikke til...
Kunne du ikke skære det helt ud i pap, for jeg fatter ikke ret meget, og
Delphis hjælp på dette område gør mig kun endnu mere forvirret... øv
På forhånd tak
--
Steffen V Petersen
Remove remove.
| |
Simon Hiort-Lorenzen (09-12-2002)
| Kommentar Fra : Simon Hiort-Lorenzen |
Dato : 09-12-02 00:44 |
|
"Steffen V Petersen" <news01@swipe.remove.dk> wrote in message
news:at0anm$due$1@sunsite.dk...
> > procedure Form1.Test(Str: String);
> > begin
> > Edit1.Text := Str;
> > end;
> Er prøvet... Hvis den står under private (i inteface) siger den nu bare:
> Undeclared identifyer: Form1
Du skal skrive TForm1 i implementation (men ikke i deklarationen). Her er
hele unit1, med en korrekt deklaration (lavet i D5):
-----
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
private
{ Private declarations }
public
{ Public declarations }
function Test(Str : string) : boolean;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function TForm1.Test(Str : string) : boolean;
begin
Edit1.Text := Str;
end;
end.
----
I det her tilfælde skal du dog lave en procedure i stedet en funktion, for
du har ikke burg for at returnere noget. Du vil også få en advarsel der
siger 'Return value of function 'TForm1.Test' might be undefined' fordi du
ikke giver nogen returværdi i funktionen.
>
> > Køb dig en lærebog. Det fortryder du ikke.
> Ville jeg skam gerne, men det kun som valgfag på gym jeg har det, så at
> spendere knaster på en bog her op til jul, holder en SU ikke til...
Personligt synes jeg det er sjovere at lære ved at finde ud af hvad man
gerne vil lave, og så finde ud af hvordan, i stedet for at blive guidet
igennem noget som en forfatter synes man skal lave. Men det er jo smag og
behag.
Simon
| |
Kurt Bilde (09-12-2002)
| Kommentar Fra : Kurt Bilde |
Dato : 09-12-02 13:00 |
| | |
|
|