Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Procedure aufrufen... (https://www.delphipraxis.net/20095-procedure-aufrufen.html)

abc 13. Apr 2004 17:22


Procedure aufrufen...
 
Eine kleine Frage noch:
Habe eine eigene Procedure erstellt:

Delphi-Quellcode:
procedure MB;
var List:TStringList;
begin
 List:=TStringList.Create;
 List.LoadFromFile('C:\Text.txt');
 Label11.Caption:=List.Strings[0];
 Label12.Caption:=List.Strings[1];
 Label13.Caption:=List.Strings[2];
 List.Free;
end;
Wie kann ich auf die Procedure MB mit anderen Prozeduren zugreifen?
Wenn CheckBox1 soll String 0 angezeigt werden.
Wenn CheckBox2 soll String 1 angezeigt werden usw.

Z.B:

Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 MB;
end;

Wie geht das? Bitte um Verständnis, bin noch neu.....aber fleissig am lernen ;) danke euch allen...

[edit=sakura] [delphi]-Tags. Mfg, sakura[/edit]

Markus K. 13. Apr 2004 17:28

Re: Procedure aufrufen...
 
Hallo abc,
als erste würde ich die Prozedur im Public- oder Private-Bereich der Form deklarieren. z.B.:
Delphi-Quellcode:
public
    { Public-Deklarationen }
    procedure MB;
Als nächstes muss diese Prozedur ebenfalls im Implementation-Teil der Unit deklariert werden.
Delphi-Quellcode:
procedure TForm1.MB;
var List:TStringList;
begin
     List:=TStringList.Create;
     List.LoadFromFile('C:\Text.txt');
     Label1.Caption:=List.Strings[0];
     Label2.Caption:=List.Strings[1];
     Label3.Caption:=List.Strings[2];
     List.Free;
end;
Wenn du dies getan hast, kannst du die Prozedur immer aufrufen wenn du sie brauchst. z.B.:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
     MB;
end;
Tschüß Markus

abc 13. Apr 2004 18:28

Re: Procedure aufrufen...
 
Danke, aber wie kann ich denn nun z.bsp. nur die erste zeile aufrufen?

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
MB_Genauigkeit;
end;


Danke.

Hansa 13. Apr 2004 18:36

Re: Procedure aufrufen...
 
Zitat:

Zitat von abc
Wie kann ich auf die Procedure MB mit anderen Prozeduren zugreifen?
Wenn CheckBox1 soll String 0 angezeigt werden.
Wenn CheckBox2 soll String 1 angezeigt werden usw.

Das sieht mir schwer nach Funktionen aus und nicht nach Prozeduren. 8)

abc 13. Apr 2004 18:46

Re: Procedure aufrufen...
 
Hallo,
Markus K. hat im dritten Code-BLock folgendes geschrieben:

Delphi-Quellcode:
 
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  MB_Genauigkeit;
end;
Ich will nur aus dieser Procedure "CheckBox 1 Click" auf den String 0 zugreifen. Mit einer anderen Procedure "CheckBox 2 Click" soll dann auf den String 1 usw....
Warum eine Funktion?

Danke.
Mfg.

Hansa 13. Apr 2004 18:54

Re: Procedure aufrufen...
 
Zitat:

Zitat von abc
Ich will nur aus dieser Procedure "CheckBox 1 Click" auf den String 0 zugreifen. Mit einer anderen Procedure "CheckBox 2 Click" soll dann auf den String 1 usw....
Warum eine Funktion?

Weil dann der Funktionswert leicht ausgewertet werden kann. Natürlich könnte man auch Parameter verwenden. 8)

abc 13. Apr 2004 18:55

Re: Procedure aufrufen...
 
Ja, Parameter hört sich gut an, aber wie macht man das?
hast du eine Ahnung?
Bitte....

xineohp 13. Apr 2004 19:04

Re: Procedure aufrufen...
 
moin,

wie wärs mit:

Delphi-Quellcode:
procedure TForm1.MB(i: integer);
var List:TStringList;
begin
     List:=TStringList.Create;
     List.LoadFromFile('C:\Text.txt');
     case i of
       1: Label1.Caption:=List.Strings[0];
       2: Label2.Caption:=List.Strings[1];
       3: Label3.Caption:=List.Strings[2];
     end;
     List.Free;
end;
und

Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  MB(1); //bzw. 2 oder 3
end;
phoenix

xineohp 13. Apr 2004 19:04

Re: Procedure aufrufen...
 
oder ganz dynamisch:

Delphi-Quellcode:
procedure TForm1.MB(i: integer);
var List:TStringList;
begin
     List:=TStringList.Create;
     List.LoadFromFile('C:\Text.txt');

     (findcomponent('Label'+inttostr(i)) as TLabel).Caption := List.Strings[i-1];

     List.Free;
end;
Das macht aber nur Sinn wenn es recht viele Labels sind die eventuell dynamisch erzeugt wurden und auf jeden Fall nach dem Schema Label+Indexzahl benannt sein müssen.

phoenix

xineohp 13. Apr 2004 19:26

Re: Procedure aufrufen...
 
ne andere Möglichkeit wäre eine Funktion:

Delphi-Quellcode:
function TForm1.MB(i :integer);
var List:TStringList;
begin
     List:=TStringList.Create;
     List.LoadFromFile('C:\Text.txt');
 
     result := List.Strings[i];
 
     List.Free;
end;
die dann mit
Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  Label1.caption := MB(0);
end;
aufgerufen wird. Scheint mir bei einer begrenzten Anzahl von Labels hier die sinnvollste Variante zu sein :)

so, nun fällt mir nix mehr dazu ein :wink:
phoenix

Hansa 13. Apr 2004 19:31

Re: Procedure aufrufen...
 
Funktionen ohne Rückgabewert ? hmmmm :gruebel:

xineohp 13. Apr 2004 19:38

Re: Procedure aufrufen...
 
Ups ... :pale: peinlich, fehlt natürlich ein ":string"

Hansa 13. Apr 2004 19:42

Re: Procedure aufrufen...
 
nix string, noch mehr fehlt. 8)

xineohp 13. Apr 2004 19:49

Re: Procedure aufrufen...
 
:?: und was bitte?

Hansa 13. Apr 2004 19:57

Re: Procedure aufrufen...
 
oh je, da fehlt im Prinzip nichts mehr, aber eine Funktion kann auch eine Zahl zurückliefern. Die kann man mit FindComponent verwenden. Oder in einem Array. Man kann auch einen Index dieses Arrays als Zahl verwenden und als String oder Record weiterverarbeiten. und und und....

xineohp 13. Apr 2004 20:02

Re: Procedure aufrufen...
 
wohl wahr, aber bist du wirklich der Ansicht, dass das dann noch eine "elegante" Lösung ist :gruebel: In diesem speziellen Fall meine ich.

Hansa 13. Apr 2004 20:24

Re: Procedure aufrufen...
 
WIrd nur ein Wert gebraucht, so verwende ich eine Funktion. Ansonsten mach ich das anders. 8)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz