Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Boolean fehler (https://www.delphipraxis.net/159416-boolean-fehler.html)

Gilmohr 27. Mär 2011 01:31

Delphi-Version: 5

Boolean fehler
 
Hi, hab grad mal ne Frage, evtl ist jemand wach und kann mir kurz sagen wo der fehler liegt?

hier der code:
Code:
procedure TForm1.Button1Click(Sender: TObject);

var a: integer;

begin
  a := 0 ;
  //for a := 0 to 10 do
  repeat
    if BerechnungStart = true then begin
    v[a] := FloatToStr((Volumenstrom * 4) / ( StrToInt(d[a]) * 3.1416 * 1000 ));
    memo1.Lines.add(v[a]);
    inc (a);
    end;
  until
    if a = j then
    BerechnungStart := false;
end;
wenn ich versuche zu compilieren kommt folgende fehlermeldung:

[Fehler] Rohrnetzberechnung.pas(249): Ausdruckstyp muss BOOLEAN sein

allerdings verstehe ich nicht wieso...:?: für den fall dass a=j (a = 10 // soll nur 10 berechnungen anzeigen) soll BerechnugsStart auf false gesetzt werden damit nicht weiter gerechnet wird.

hoffe mir kann jemand helfen.
Gruß

isilive 27. Mär 2011 01:44

AW: Boolean fehler
 
Zitat:

Zitat von Gilmohr (Beitrag 1091251)
Code:
procedure TForm1.Button1Click(Sender: TObject);

var a: integer;

begin
...
  repeat
... until
    if a = j then
    BerechnungStart := false;
end;

nach until muss ein boolean operator oder ein vergleich kommen. aber auf keinen fall ein "if". hast du sicher nur übersehen, oder? :stupid::cyclops::stupid:

Luckie 27. Mär 2011 01:45

AW: Boolean fehler
 
Guck dir mal die Syntax zu until an.

himitsu 27. Mär 2011 01:46

AW: Boolean fehler
 
Zitat:

Zitat von Gilmohr (Beitrag 1091251)
Code:
until
  if a = j then

Ich schlage mal vor, du befragst die OH, wie eine Repeat-Until-Schleife aufgebaut ist.

Wobei dein "sinnloses"
Delphi-Quellcode:
if BerechnungStart = true then begin
eigentlich besagt, daß du eine While-Schleife nutzen solltest, anstatt dem Repeat.

Aber das ist eh alles egal, da
Delphi-Quellcode:
inc(a); if a = j then
sowieso ganz laut nach einer For-Schleife schreit,
so wie du es auch schon angedeutet hattest.

PS:
Zitat:

soll nur 10 berechnungen anzeigen
0 bis 10 sind aber 11 Durchläufe und nicht 10.

PPS: Wo um Himmels Willen ist
Delphi-Quellcode:
BerechnungStart
deklariert?
Und sag jetzt bitte nicht, daß diese lokal genutzte Variable irgendwo global rumgammelt.

Und noch ein Tipp: Für 3.1416 kennt Delphi eine Konstante, namens PI.

Gilmohr 27. Mär 2011 01:50

AW: Boolean fehler
 
ah ja klar !! ^^
danke jetzt seh ichs auch. ...ist wohl doch schon bisl spät :shock:
hab jetzt die bedingung für false oben schon mit rein genommen und schon läufts.

Danke !!

Luckie 27. Mär 2011 01:55

AW: Boolean fehler
 
Das muss ich jetzt nicht verstehen oder?

Gilmohr 27. Mär 2011 03:06

AW: Boolean fehler
 
nee ^^ ... musst wissen das ich noch delphi anfänger bin.

aber habs jetzt auch ganz ohne boolean hinbekommen weil er zwar die anwendung gestartet, sich dann aber bei der rechnung gehangen hat.
so funktionierts ohne probleme

Code:
procedure TForm1.Button1Click(Sender: TObject);

var a: integer;

begin
  memo1.Clear;
  a := 0 ;
  repeat
    v[a] := FloatToStr((Volumenstrom * 4) / ( StrToInt(d[a]) * 3.1416 * 1000 ));
    memo1.Lines.add(v[a]);
    inc (a);
  until
    a = j

end;

Luckie 27. Mär 2011 03:21

AW: Boolean fehler
 
Und warum keine for-Schleife? Damit sparst du dir das hochzählen von a und die Abbruchbedingung.

Medium 27. Mär 2011 03:22

AW: Boolean fehler
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
  K = 0.00127323954473; // ~= 4 / (PI*1000)
var
  a: integer;
begin
  memo1.Clear;
  for a := 0 to j do
    memo1.Lines.add(FloatToStr((Volumenstrom*K)/StrToInt(d[a])));
end;
Edit: Hallo roter Kasten, hallo Luckie :)
Edit2: An der Formel bissl gedreht. Weitgehend Kosmetik.

Gilmohr 27. Mär 2011 03:32

AW: Boolean fehler
 
mit For schleife hatte ich probiert...aber das hab ich nicht so hinbekommen ...und nu läufts ja. ob das schön gecodet ist spielt für mich momentan keine rolle. soll nur irgendwie laufen.

@Medium: cool ! danke, werd das auch mal so einbauen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr.
Seite 1 von 2  1 2      

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