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[20] := Summenwert[20] - Sqr(Summenwert[10]) / Summenwert[00];
    if Determinante[20] <= 0.0 then
    begin
      Determinante[20] := 1E-6;
    end;
    Determinante[02] := Summenwert[02] - Sqr(Summenwert[01]) / Summenwert[00];
    if Determinante[02] <= 0.0 then
    begin
      Determinante[02] := 1E-6;
    end;
    Determinante[11] := Summenwert[11] - Summenwert[10] * Summenwert[01] / Summenwert[00];
    if (Determinante[11] <= 0.0then
    begin
      Determinante[11] := 1E-6;
    end;
    Steig := Determinante[11] / Determinante[20];
    Achse := Summenwert[01] / Summenwert[00] - Steig * Summenwert[10] / Summenwert[00];
    result := Round(Summenwert[00]);
end;

// Die Variablen Determinante, Summenwert, Steig und Achse wurden sind in der Komponente TKP definiert.


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 user defined image oder user defined image 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.