Autor Beitrag
Linus
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mo 06.01.03 13:49 
Hallo :? *verzweifeltsei*

mal ne Frage...
Ich habe mehrere fUnctions und möchte, dass sie Teils nach einem Button-Klick, teils einfach so bei Starten des Programms ablaufen...

Wie geht das? Wenn man einen Button aufruft, erzeugt er ja selbst schon eine Prozedur.....
ausblenden Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin

end;

wo ist da platz für eine function?

wäre super, wenn mir jemand helfen kann :wink:
danke - Linus
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Mo 06.01.03 14:08 
also deine funktion schriebst du zwischen begin und end; !!!
wenn du willst, dass deine funktion beim start des programmes abläuft, dann mach doch mal einen doppelklick auf dein formular. dann bekommt du etwas mit FormCreate. da schriebst du wieder deine funktion zwischen begin und end; und schon wird die beim starten des programms aufgerufen.

_________________
In the beginning was the word.
And the word was content-type: text/plain.
Linus Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mo 06.01.03 14:22 
das klappt nicht :(

weiß auch nicht, obs an meinen funktionen liegt :(
ich kann kein delphi *hoil*
also es geht um stringverarbeitung....
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
function Length(S: string): Integer;
var kette : String;
    laenge: Integer;
begin
  kette := Edit1.Text;
  laenge := Length(kette);
  Edit3.Text := IntToStr(laenge);
end;

function Delete(var s: string; Anfang, Anzahl: Integer)
var kette: string;
    laenge: Integer;
begin
  kette := Edit1.Text;
  Delete(laenge,1)
end;

?!
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mo 06.01.03 14:35 
Hi!

Grundsätzliches: Bitte nie einfach "Es klappt net" schreiben. Was genau passiert denn? Gibt es eine Fehlermeldung? Wie lautet sie? Was genau soll vom Programm erreicht werden?

Ok, schauen wir uns mal die Funktionen an.

Warum übergibst du einen String S, den du dann in der Funktion aber zur Ermittlung des Funktionsrückgabewertes gar nicht benutzt? Du ermittelst ja schliesslich einfach nur die Länge des Textes in Edit1 und gibst diese in Edit3 aus. Wieso überhaupt eine Funktion und keine Procedure?

Ach, bevor ich jetzt auf alle Einzelheiten eingehe: Was genau willst du denn bei Programmstart bzw. ButtonClick machen?

Cu,
Udontknow
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mo 06.01.03 14:37 
Hi
linus hat folgendes geschrieben:

ich kann kein delphi *hoil*

In diesem Fall könntest du hier Hilfe finden.
Konkret zu deiner Funktion: Wenn du schon Parameter und Rückgabewerte definierst, dann solltest du sie auch verwenden. Zum Beispiel so:
ausblenden Quelltext
1:
2:
3:
4:
function Laenge(S: string): Integer; 
begin 
  Result := Length(S); 
end;

Du solltest es unbedingt vermeiden, deinen Funktionen die Namen von bereits vorhandenen Systemfunktionen zu geben. Jetzt könntest du diese Funktion in einem Button-Ereignis verwenden:
ausblenden Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  Edit3.Text := IntToStr(Laenge(Edit1.Text));
end;


Wie gesagt: Versuch mal ein paar Tutorials durchzuarbeiten, denn stellt das bald kein Problem mehr dar.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Mo 06.01.03 14:38 
möglicherweise liegts daran, dass es die function lenght schon in delohi gibt. nimm mal nen andren namen !!!

_________________
In the beginning was the word.
And the word was content-type: text/plain.
torstenheinze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 461



BeitragVerfasst: Mo 06.01.03 14:40 
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
function Length(S: string): Integer; 
var kette : String; 
laenge: Integer; 
begin 
kette := Edit1.Text; 
laenge := Length(kette); 
Edit3.Text := IntToStr(laenge); 
end;

VOR DAS EDIT3 MUSS ein FORM1. , damit delphi weiß, auf welchem formular das editfeld ist

(06.01. 13:52 Tino) Code-Tags hinzugefügt.
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mo 06.01.03 17:54 
das man form1 in der Funktion vor Komponentennamen o.ä. davor schreiben muss, kann man glaube ich umgehen indem man die funktion oben im "Kopf" der unit mit hinschreibt:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
type
  TForm1 = class(TForm)
  function FunktionsName(Parameter1:var-Typ;[Parameter2:var-Typ]):(var-typ von Result);
  .
  .
  .

und die Deklaration der Funktion wie folgt ändert:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
function tform1.FunktionsName(Parameter1:var-Typ;[Parameter2:var-Typ]):(var-typ von Result);
begin
...
end;

dadurch ist es dann auch möglich auf die Funktion von einer anderen Unit aus zuzugreifen...

Fiji-Fighter