Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Programm überspringt Zeilen ohne erklärbaren Grund
Tranx - Mi 22.12.10 16:50
Titel: Programm überspringt Zeilen ohne erklärbaren Grund
Hallo Leute, möchte Euch über einen sehr merkwürdigen Effekt berichten, welcher mich fast zum Wahnsinn getrieben hat.
Ich habe eine Regressionsrechnung anhand von Daten durchgeführt (x,y). Die Daten wurden in ein Summenfeld übertragen und dann die Regressionswerte Steigung udn Achsenabschnitt berechnet. Die Berechnungsroutine sah wie folgt aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| function TKP.BerechneFaktoren: integer; begin Determinante[2, 0] := Summenwert[2, 0] - Sqr(Summenwert[1, 0]) / Summenwert[0, 0]; if Determinante[2, 0] <= 0.0 then begin Determinante[2, 0] := 1E-6; end; Determinante[0, 2] := Summenwert[0, 2] - Sqr(Summenwert[0, 1]) / Summenwert[0, 0]; if Determinante[0, 2] <= 0.0 then begin Determinante[0, 2] := 1E-6; end; Determinante[1, 1] := Summenwert[1, 1] - Summenwert[1, 0] * Summenwert[0, 1] / Summenwert[0, 0]; if (Determinante[1, 1] <= 0.0) then begin Determinante[1, 1] := 1E-6; end; Steig := Determinante[1, 1] / Determinante[2, 0]; Achse := Summenwert[0, 1] / Summenwert[0, 0] - Steig * Summenwert[1, 0] / Summenwert[0, 0]; result := Round(Summenwert[0, 0]); end;
|
Nun trat bei der Berechjnung ein sehr merkwürdiger effekt auf. Alle Determinanten wurden berechnet, doch die Achse und die Steigung wurden partout übersprungen. Ich habe es versucht, an mehreren Stelle im Programm. Immer der gleiche Fehler. Dann habe ich als letzten Ausweg die .PAS-Datei in den Editor geladen und wieder gespeichert. Und siehe da, der Fehler war weg. Möglicherweise war ein ungültiges Zeichen für den Effekt verantwortlich, wo das aber sein sollte, ist mir nicht klar. Selbst mit den Berechnungszeilen ohne Leerzeichen am Anfang wurden diese übersprungen.
Falls Ihr aus irgendwelchen Gründen auch mal einen solchen Effekt haben solltet, der Euch zum Wahnsinn treibt, versucht es mit der gleichen Methode wie ich. Vielleicht wird dieser Fehler dann ebenso verschwinden.
Narses - Mi 22.12.10 16:52
Moin!
Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den
Richtlinien [
http://www.entwickler-ecke.de/richtlinien.html]:
1.2 Beiträge: |
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...] |
Einfach oben bei Deinem ersten Beitrag auf

oder

klicken und den Titel ändern. Danke Dir!
cu
Narses
Nersgatt - Mi 22.12.10 17:08
Manchmal hat man solche seltsamen Effekte, wenn der Zeilenumbruch in den PAS-Datei nicht stimmt, wenn also #13 oder #10 statt #13#10 dort steht. Dann sieht es im Editor korrekt aus, führt aber zu solchen komischen Effekten.
ALF - Mi 22.12.10 18:45
Warum verwendest Du eine Funktion dafür, wenn result ja gar nicht in diesen Berechnungen berücksichtigt wird? Dann kannst Du das ganze auch in eine Prozedure ablegen. Im ersten Moment verwirrt dies, später Dich vielleicht auch, wenn Result immer gleich bleibt.
Gruss ALf
Tranx - Do 23.12.10 04:20
Zu Alf:
Result ist die Anzahl der für die Regression benutzten x-y-Paare.
Summenwert[nx,ny] = Summe von x^nx*y^ny, dann ist Summenwert[0,0] = Summe von 1-ern
Wenn Summenwert >1 ist, soll dann später die Regression benutzt werden, wenn nicht, soll keine Regression benutzt werden.
Zu Nersgatt:
Danke für den Hinweis. Falls mal wieder so eine Effekt auftreten sollte, weiß ich jetzt Bescheid und werde gleich den Editor zur Hilfe nehmen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!