Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Var in einer Funktion über ein Button aufrufen ! (https://www.delphipraxis.net/113260-var-einer-funktion-ueber-ein-button-aufrufen.html)

Delphiturbo 5. Mai 2008 12:36


Var in einer Funktion über ein Button aufrufen !
 
Hallo

ich habe folgendes
Delphi-Quellcode:
function serial(user: string): string;
var:
s1: string // das will ich über ein Button aufrufen
...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if edit1.text = serial(s1) then
begin
Form2.Show;
end;
Die Variable ist nicht in Button deklariert sondern nur in der Funktion
wie kann ich s1 in Button deklarieren ?

DP-Maintenance 5. Mai 2008 12:38

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Windows API / MS.NET Framework API" nach "Object-Pascal / Delphi-Language" verschoben.
Ist ja keine API Frage

Matze 5. Mai 2008 12:43

Re: Var in einer Funktion über ein Button aufrufen !
 
Hallo,

irgendwas stimmt an deinem Konzept nicht. Wenn du in Button1Click die Variable s1 benötigst, könntest du diese in der Funktion zurückgeben oder - weniger schön - ginge es mit einer globalen Deklaration (Private-Abschnitt).
Eine Variable ist generell nur in dem Block gültig, in dem sie deklariert wurde. Eine doppelte Deklaration würde folglich nichts nützen.

Es wäre jedoch sinnvoll, wenn du genau erklären würdest, was du erreichen möchtest. Da gibt es sicher eine deutlich bessere Lösung.
Ich gehe davon aus, dass OOP noch nichts für dich ist und ob das was bringen würde, kann ich aus deiner Beschreibung nicht entnehmen. ;)

Grüße

RavenIV 5. Mai 2008 12:48

Re: Var in einer Funktion über ein Button aufrufen !
 
Ich wollte grad selber lostippeln, dann hab ich den roten Kasten gesehen.

Ich stimme mit Matze völlig überein, bis auf das hier:
Zitat:

Zitat von Matze
Ich gehe davon aus, dass OOP noch nichts für dich ist und ob das was bringen würde, kann ich aus deiner Beschreibung nicht entnehmen. ;)


Der.Kaktus 5. Mai 2008 12:49

Re: Var in einer Funktion über ein Button aufrufen !
 
Zitat:

Zitat von Delphiturbo
Hallo

ich habe folgendes
Delphi-Quellcode:
function serial(user: string): string;
var:
s1: string // das will ich über ein Button aufrufen
...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if edit1.text = serial(s1) then
begin
Form2.Show;
end;
Die Variable ist nicht in Button deklariert sondern nur in der Funktion
wie kann ich s1 in Button deklarieren ?


Zitat:

Zitat von Matze
Hallo,

irgendwas stimmt an deinem Konzept nicht. Wenn du in Button1Click die Variable s1 benötigst, könntest du diese in der Funktion zurückgeben oder - weniger schön - ginge es mit einer globalen Deklaration (Private-Abschnitt).
Eine Variable ist generell nur in dem Block gültig, in dem sie deklariert wurde. Eine doppelte Deklaration würde folglich nichts nützen.

Es wäre jedoch sinnvoll, wenn du genau erklären würdest, was du erreichen möchtest. Da gibt es sicher eine deutlich bessere Lösung.
Ich gehe davon aus, dass OOP noch nichts für dich ist und ob das was bringen würde, kann ich aus deiner Beschreibung nicht entnehmen. ;)

Grüße

Hallo, ich wuerde an Deiner Stelle s1 als globale Variable definieren..also nicht innerhalb einer Funktion.

RavenIV 5. Mai 2008 12:53

Re: Var in einer Funktion über ein Button aufrufen !
 
Zitat:

Zitat von Der.Kaktus
Hallo, ich wuerde an Deiner Stelle s1 als globale Variable definieren..also nicht innerhalb einer Funktion.

Und der Variablen auch gleich einen aussagekräftigen Namen geben.
z.B. fButtonString (oder so was in der Art)

Delphiturbo 5. Mai 2008 13:01

Re: Var in einer Funktion über ein Button aufrufen !
 
Die variable s1 ist ein String in der Funktion

Über das Button habe ich vorher das String in Edit1.Text verwendet :
Delphi-Quellcode:
if edit2.text = serial(Edit1.Text)
....
nun möchte ich nicht Edit1.Text als String nehmen sondern ein String von der Funktion

Ich habe das Problem mit einer Idee gelöst :Ich die Funktion komplett
in Button Code doppelt kopiert. Aber das ist vielleicht unnötig

Wie kann ich das String s1 als global deklarieren ?

Matze 5. Mai 2008 13:03

Re: Var in einer Funktion über ein Button aufrufen !
 
Recht weit oben in deiner Unit im Private-Abschnitt:

Delphi-Quellcode:
// ...
private
  s1: string;
// ...

DeddyH 5. Mai 2008 13:04

Re: Var in einer Funktion über ein Button aufrufen !
 
Darf man fragen, wozu Du unbedingt solche wilden Konstrukte haben möchtest? Die Variante mir der Funktion aus #1 ist doch vollkommen in Ordnung.

Delphiturbo 5. Mai 2008 13:21

Re: Var in einer Funktion über ein Button aufrufen !
 
Zitat:

Zitat von Matze
Recht weit oben in deiner Unit im Private-Abschnitt:

Delphi-Quellcode:
// ...
private
  s1: string;
// ...

So hast du die Variable deklariert und wird damit keine Fehlermeldung beim Kompilieren
angezeigt.
Das Programm nehmt das String s1 = ' ' !!!
Ich bekomme ein Ergebnis als S1:=' nichts drin :(';

Matze 5. Mai 2008 13:23

Re: Var in einer Funktion über ein Button aufrufen !
 
Zitat:

Zitat von Delphiturbo
So hast du die Variable deklariert und wird damit keine Fehlermeldung beim Kompilieren
angezeigt.
Das Programm nehmt das String s1 = ' ' !!!
Ich bekomme ein Ergebnis als S1:=' nichts drin :(';

Bitte was?

DeddyH 5. Mai 2008 13:23

Re: Var in einer Funktion über ein Button aufrufen !
 
Was willst Du eigentlich bezwecken? Und wenn Du die Variable bereits unter private deklarierst, darfst Du sie innerhalb der Funktion nicht erneut deklarieren.

Delphiturbo 5. Mai 2008 13:28

Re: Var in einer Funktion über ein Button aufrufen !
 
Ich möchte wenn ich auf das Button anklicke, dann soll die Funktion "Serial" aufgerufen und danach den Wert von dem String S1 in der Funktion angenommen wereden
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if edit1.text = serial(s1) then // s1 ist in der Funktion gespeichert

DeddyH 5. Mai 2008 13:30

Re: Var in einer Funktion über ein Button aufrufen !
 
Ich steig da nicht durch. Poste doch mal den kompletten relevanten Code, dann wird mir das vielleicht klarer.

Phoenix 5. Mai 2008 13:31

Re: Var in einer Funktion über ein Button aufrufen !
 
Häh? :gruebel:

Wenn Du S1 schon als Variable im Formular hast, warum übergibst Du sie dann nochmal an die Funktion? Das macht doch keinen Sinn?

Was macht die Funktion überhaupt? Was willst Du damit denn überhaupt bezwecken?

DeddyH 5. Mai 2008 13:35

Re: Var in einer Funktion über ein Button aufrufen !
 
Das hab ich auch schon 2 mal gefragt.

mkinzler 5. Mai 2008 13:38

Re: Var in einer Funktion über ein Button aufrufen !
 
Das scheint aber sein Geheimnis zu sein

Butch87 5. Mai 2008 13:39

Re: Var in einer Funktion über ein Button aufrufen !
 
ich hoffe, du meinst das so...

Delphi-Quellcode:
procedure buttonclick(sender: TObject)
var Bla: String;
begin
  .
  Serial(Bla);
  .
  .
//  in bla steht nun 'Test, eins zwo...'
end;

procedure serial(var Test: String);
begin
  Test:= 'Test, eins zwo...'
  .
  .
  .
end;

Delphiturbo 5. Mai 2008 13:40

Re: Var in einer Funktion über ein Button aufrufen !
 
ich habe z.B.folgendes
Delphi-Quellcode:
function serial(user: string): string;
var:
s0, s1, s2, s3, ...: string;
...
Begin
s0:='blabla';
s1:=s0+ 'abc'; // diesen wert möchte ich nehmen
...
// die Funktion geht weiter
...
Result:= ...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if edit1.text = serial(s1) then
begin
wie kann ich über das Button den Wert von S1 holen ?

Natürlich ist das Geheimnis ! Funktion-Name sagt was oder ? :mrgreen:

DeddyH 5. Mai 2008 13:42

Re: Var in einer Funktion über ein Button aufrufen !
 
Obwohl ich das persönlich für Quatsch halte: Du hast die Variable ja bereits im private-Abschnitt deklariert. Wenn Du sie innerhalb der Funktion erneut deklarierst, sind das 2 verschiedene Variablen! Also aus der Funktionsdeklaration wieder rausnehmen.

[edit] Achja, und function serial muss dann als Methode des Formulars deklariert werden (function TForm1.serial). [/edit]

Klaus01 5. Mai 2008 13:47

Re: Var in einer Funktion über ein Button aufrufen !
 
.. noch ein Vorschlag:

Delphi-Quellcode:
function TForm1.serial(userId: byte): string;
var:
 s : array[0..3] of strings;
Begin
  s[0]:='blabla';
  s[1]:=s0+ 'abc'; // diesen wert möchte ich nehmen
...
// die Funktion geht weiter
...
  Result:= s[userId];
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if edit1.text = serial(1) then
    begin
Grüße
Klaus

Delphiturbo 5. Mai 2008 13:54

Re: Var in einer Funktion über ein Button aufrufen !
 
Zitat:

Zitat von DeddyH
Obwohl ich das persönlich für Quatsch halte: Du hast die Variable ja bereits im private-Abschnitt deklariert. Wenn Du sie innerhalb der Funktion erneut deklarierst, sind das 2 verschiedene Variablen! Also aus der Funktionsdeklaration wieder rausnehmen.

[edit] Achja, und function serial muss dann als Methode des Formulars deklariert werden (function TForm1.serial). [/edit]

Stimmt. Das war das Problem, 2 mal deklariert als lokal und als global
jetzt geht. Danke!


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

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