Autor Beitrag
cubus
Hält's aus hier
Beiträge: 2

win98
D6 Pers.
BeitragVerfasst: Do 06.01.05 19:46 
Hab jetzt schon die Suche durchforstet und gegoogled aber etwas genau passendes hab ich nicht gefunden... (zumindest nichts dass mir erklärt warum und warum nicht...genaueres nach dem folgenden qt)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm4.Button7Click(Sender: TObject);
var  zahl1 , zahl2 ,  ergebnis: real;
label l1;
begin

 if Edit11.Text='' then goto l1 else if Edit12.Text='' then goto l1 else
                zahl1 :=StrToInt (Edit11.Text);
                zahl2 :=StrToInt (Edit12.Text);
                ergebnis := sqrt( zahl2 * zahl1);
                Edit14.Text:=FloatToStr(ergebnis)             ;

        exit;
l1:
Edit14.Text:='blah';
end;

(l1 hab ich abgeändert...)
Das was dort oben von if bis exit steht hab ich ...kA 20 weitere male (oder so) in der Unit aber nur 2mal bekomme ich vom Compiler die Warnung "Variable 'XYZ' might not have been initialized".
Ich kopier den Teil der Funktion immer nur und veränder dann darin die Zahlen der Editboxen bzw. die Rechenformel.
Warum bekomme ich nur 2mal die Warnung?? O.o
Im voraus schonmal danke für die Hilfe, wär nett wenn mir heute noch jemand helfen würde, da ich das Projekt morgen in der Schule vorstellen muss..mfg
I.MacLeod
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 109



BeitragVerfasst: Do 06.01.05 19:55 
1. Warum benutzt du da goto? Allgemein gilt: goto vermeiden, wenn möglich, da sonst :nut:

2. ein normales "else" gilt nur für einen Befehl. Ein begin-end Block um die vier Zeilen sollte das Problem lösen.
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Do 06.01.05 19:57 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button7Click(Sender: TObject);
var
  Zahl1, Zahl2, Ergebnis: Double;
begin

  if (Edit11.Text = '') or (Edit12.Text = '') then
    Edit14.Text := 'blah'
  else begin
    Zahl1 := StrToIntDef(Edit11.Text, 0);
    Zahl2 := StrToIntDef(Edit12.Text, 0);
    Ergebnis := Sqrt(Zahl1 * Zahl2);
    Edit14.Text := FloatToStr(Ergebnis);
  end;

end;

_________________
Ciao, Sprint.
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Do 06.01.05 19:57 
mach dich mal mit if und der bedingung <> sowie mit dem generellen Syntax von if vertraut, insbesondere, wann du teile in begin und end setzten mußt. und goto verwendet man gar nicht gern.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
 
  if (Edit11.Text<>'') and (Edit12.Text<>'') then 
    begin
      zahl1 :=StrToInt (Edit11.Text);  
      zahl2 :=StrToInt (Edit12.Text);  
      ergebnis := sqrt( zahl2 * zahl1);  
      Edit14.Text:=FloatToStr(ergebnis);  
    end  
   else Edit14.Text:='blah, keine werte eingetragen';

letztenendes kannst du dir die ganzen variablen auch noch sparen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
 
  if (Edit11.Text<>'') and (Edit12.Text<>'') then 
    Edit14.Text:=FloatToStr(sqrt( StrToInt (Edit12.Text) * StrToInt (Edit11.Text))    );  
   else
    Edit14.Text:='blah, keine werte eingetragen';


die Warnung erhälst du, weil du die begin und end vergessen hast. nur zahl1 steht in einer If-Abfrage, und würde evtl nicht mit einem wert belegt, das ist der grund der warnung.

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
cubus Threadstarter
Hält's aus hier
Beiträge: 2

win98
D6 Pers.
BeitragVerfasst: Do 06.01.05 20:18 
Danke für eure schnellen Antworten...
Ich hab jetzt mal Sprints Version genommen (hätte ich gewusst dass goto so verpöhnt is hätte ich das was nach dem Label kam noch mitgepostet ) und nun bekomm ich den Rest nichtmehr rein.
(das nach dem Label sieht genauso aus wie mein Code von eben :/ )
Hier der Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
 if Edit10.Text=''
        then Edit8.Text:='Größe fehlt'
        else if Edit11.Text='' then Edit8.Text:='Größe fehlt' else
                zahl1 :=StrToInt(Edit10.Text);
                zahl2 :=StrToInt(Edit11.Text);
                ergebnis := sqrt(sqr(zahl2) - sqr(zahl1) )  ;
                Edit14.Text:=FloatToStr(ergebnis)             ;

Danke nochmals für eure Hilfe
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Do 06.01.05 20:31 
und du hast nichts verstanden :roll:, das begin und end fehlt z.B. immer noch

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Do 06.01.05 23:05 
Keldorn hat folgendes geschrieben:
und du hast nichts verstanden :roll:, das begin und end fehlt z.B. immer noch


Wieso? Das merkt er spätestens wenn zahl2, ergebnis und Edit4.Text falsche Werte haben werden :twisted:

_________________
Popov