![]() |
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:
wenn ich versuche zu compilieren kommt folgende fehlermeldung:
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; [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ß |
AW: Boolean fehler
Zitat:
|
AW: Boolean fehler
Guck dir mal die Syntax zu until an.
|
AW: Boolean fehler
Zitat:
Wobei dein "sinnloses"
Delphi-Quellcode:
eigentlich besagt, daß du eine While-Schleife nutzen solltest, anstatt dem Repeat.
if BerechnungStart = true then begin
Aber das ist eh alles egal, da
Delphi-Quellcode:
sowieso ganz laut nach einer For-Schleife schreit,
inc(a); if a = j then
so wie du es auch schon angedeutet hattest. PS: Zitat:
PPS: Wo um Himmels Willen ist
Delphi-Quellcode:
deklariert?
BerechnungStart
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. |
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 !! |
AW: Boolean fehler
Das muss ich jetzt nicht verstehen oder?
|
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; |
AW: Boolean fehler
Und warum keine for-Schleife? Damit sparst du dir das hochzählen von a und die Abbruchbedingung.
|
AW: Boolean fehler
Delphi-Quellcode:
Edit: Hallo roter Kasten, hallo Luckie :)
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; Edit2: An der Formel bissl gedreht. Weitgehend Kosmetik. |
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. |
AW: Boolean fehler
Wo kommt j und das Array d her?
Delphi-Quellcode:
Schon brauchen wir J nicht mehr.
for a := 0 to Length(d) - 1 do
memo1.Lines.add(FloatToStr((Volumenstrom*K)/StrToInt(d[a]))); Und Laufvariablen benennt man üblicherweise (aus historischen Gründen) mit i. Und was spricht dagegen das jetzt zu verbessern? Das erhöht die Lesbarkeit- und Verständlichkeit. |
AW: Boolean fehler
J bruach ich unbedingt.
ist keine einfache laufvariable sondern damit werden aus dateien einzelen strings ausgelesen und in nen StringGrid reingeschrieben wo verschiedene sachen aufgelistet werden. diese berechnung hier ist nue eine von mehreren bie denen j genaus verwendet werden soll. wollte das erst mit nem memo feld berechnen, aber denke es ist auch besser das im StringGrid zu machen weils aufem bildschirm besser aussieht. also neue frage kann ich das auch genaus wie bei dem memo feld machen, dass er mir nen StrinGrid in der nächsten zeile erstellt? und anstatt memo1.clear das er dann den ganzen stringGrid löscht? |
AW: Boolean fehler
Also das mit der globalen Variable j kommt mir sehr gefährlich vor und schreit gerade zu nach Fehlern, die man nicht findet. Auch solltest du die Oberfläche von der Berechnung und den Daten trennen.
Für eine neue Frage eröffne bitte auch einen neuen Thread. |
AW: Boolean fehler
das programm gehört zu dem Projekt das ich mal in nem andere thread angesprochen hab und nach hilfe gesucht hatte.
![]() werd dann alles weitere was ich gerade schrieben wollte und den quellcode dazu dann dort posten |
AW: Boolean fehler
array d ist der durchmesser.
im prinzip ist da also noch ein fehlrr in der formel weil d noch zum quadrat muss. (darum wollte ich mich später kümmern) |
AW: Boolean fehler
Zitat:
Delphi-Quellcode:
Du kannst bei jedem Schleifendurchlauf d "einlesen" und verwenden, oder - was noch eleganter wäre - d[] überhaupt als array of double statt array of string machen - nachdem ja eh nur Zahlen drinstehen. Wobei ich jetzt den Rest deines Programms nicht kenne.
var i:integer
d:double; begin for i := 0 to Length(d) - 1 do begin d:=StrToInt(d[i]); memo1.Lines.add(FloatToStr((Volumenstrom*K)/(d*d))); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 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 by Thomas Breitkreuz