Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programmergebnis je nach Rechner verschieden!? (https://www.delphipraxis.net/58817-programmergebnis-je-nach-rechner-verschieden.html)

Dirk Enzmann 13. Dez 2005 02:26


Programmergebnis je nach Rechner verschieden!?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hat irgendjemand eine Erklärung/Lösung für folgendes Problem (habe bisher nur sehr wenig in Delphi 6.0 programmiert!):

Ein schlichtes Delphi 6.0 Programm liefert auf zwei verschiedenen Rechnern unterschiedliche Ergebnisse: auf einem ein richtiges, auf einem anderen ein falsches ohne irgendeine sonstige Fehlermeldung.

Das Programm soll (in Analogie zur ISBN-Nummer) eine Prüfnummer berechnen, sie stellt den Divisionsrest der Summe der ersten 9 Zahlen eines Codes dar.

Den Quellcode (unit ISRD_ID.pas) sowie das compilierte Programm habe ich angehängt (in ISRD_ID-Code.zip). Der richtige Wert der "Check-number" muss für den Code 001-11-7-001 genau 08 lauten. Auf Windows XP (Pentium Model 2 Stepping 9) läuft es korrekt, auf einem Notebook mit Windows XP (Pentium Model 9 Stepping 5) nicht, hier liefert es als "Check-number" 06 (was falsch ist). Übrigens kann ich auf diesem Rechner auch die Hilfedatei nicht via F1 öffnen (nicht schön, aber nicht katastrophal).

Hilfe!

Luckie 13. Dez 2005 02:51

Re: Programmergebnis je nach Rechner verschieden!?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ohne das vollständige Projekt wird das nichts. Wie sollen wir das debuggen? Hast du die Möglichkeit es auf beiden Rechnern zu debuggen?

Aber warum 08?
Zitat:

The check number is constructed analogous to the ISBN number: It is the remainder of the sum of the first 9 digits divided by 11.
0+0+1+1+1+7+0+0+1 = 11
11 : 11 = 1.
Da gibt es keinen Rest. Die Prüfziffer müsste also 0 sein.

Zitat:

Zitat von Dirk Enzmann
Übrigens kann ich auf diesem Rechner auch die Hilfedatei nicht via F1 öffnen (nicht schön, aber nicht katastrophal).

Geht bei mir auch nicht. Windows 2000 SP4.

Mir war langweilig. Ergebnis siehe Anhang. :-?

Union 13. Dez 2005 07:49

Re: Programmergebnis je nach Rechner verschieden!?
 
@Luckie,

bei der ISBN wir die gewichtete Summe verwendet. D.h. jede Stelle wird vor dem Addieren mit einem anderen Faktor (Gewichtung) multipliziert. 1. Stelle x 10+ 2.Stelle x 9 etc.

Tonic1024 13. Dez 2005 08:13

Re: Programmergebnis je nach Rechner verschieden!?
 
Wenn es so ist wie du sagst, kommt tatsächlich 6 raus (Taschenrechner) ... :gruebel:



Toni

Luckie 13. Dez 2005 10:35

Re: Programmergebnis je nach Rechner verschieden!?
 
Zitat:

Zitat von Union
@Luckie,

bei der ISBN wir die gewichtete Summe verwendet. D.h. jede Stelle wird vor dem Addieren mit einem anderen Faktor (Gewichtung) multipliziert. 1. Stelle x 10+ 2.Stelle x 9 etc.

Davon hat er in seiner Hilfe aber nichts geschrieben. Und da es ja gerade um den Rechenfehler geht, bion ich eigentlich davon ausgegangen, dass seine Information vollständig ist.

Dirk Enzmann 13. Dez 2005 12:16

Re: Programmergebnis je nach Rechner verschieden!?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Luckie hat recht: So wie ich es beschrieben habe, *müsste* sich ein Rest von 0 ergeben. Allerdings habe ich es falsch beschrieben. So wie Union schrieb verwende ich auch die gewichtete Summe (von links aufsteigend). Also:

001117001.. -> 0*1+0*2+1*3+1*4+1*5+7*6+0*7+0*8+1*9 =
0+ 0+ 3+ 4+ 5+ 42+ 0+ 0+ 9 = 63
63:11 = 55 Rest 8 -> Prüfnummer = 08

Das Hauptproblem, das ich nicht verstehe, ist, dass das Programm auf verschiedenen Rechnern verschiedene Ergebnisse liefert!

Rechner 1, PC (Pentium Model 2 Stepping 9), Win-XP Professional 5.1 (Build 2600.xpsp-sp2-gdr.050301-1519:sp2 = korrekt (08)

Rechner 2, Notebook (Pentium Model 9 Stepping 5), Win-XP Professional 5.1 (Build 2600.xpsp-s2-gdr.050301-1519:sp2 = falsch (06)

Rechner 3, Notebook (?), Win-XP Home-Edition 5.1 (Build 2600.xpsp 050301-1521:sp2) = korrekt (08)

Rechner 4, Notebook (Pentium Model ?), Win-XP Professional (?) = korrekt (08)

Rechner 5, PC (Pentium Model ?), Win-XP Professional (?) = falsch (06) ABER: der gleiche Rechner mit Win-NT4 (SP6): korrekt (08).

Alle Rechner haben 512 MB physischen Speicher.

Da offenbar die kompletten Projektdateien (Delphi 6.0) nötig sind, habe ich sie hier noch einmal angehängt (die Beschreibung des Algorithmus der Check-Nummer in der Hilfe ist noch nicht korrigiert!).

Probleme habe ich übrigens auch damit, dass die Hilfe via F1 nicht auf allen Rechnern funktioniert und dass auf zwei Rechnern parallel zum Programm noch ein DOS-Fenster (?) geöffnet wird.

In der Hoffnung auf eine hilfreiche Antwort (wie gesagt, mit Delphi und objektorientiertem Programmieren habe ich nur *sehr* wenig Erfahrung!),

Dirk

Luckie 13. Dez 2005 12:23

Re: Programmergebnis je nach Rechner verschieden!?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Korrigierte Fassung im Anhang. Bei mir kommt korrekterweise jetzt auch 08 raus. Guck mal was mein Programnm auf den anderen Rechnern macht. Ich vermute mal, dass du eine variable nicht initialisiert hast und sie statt dessen irgend einen zufälligen Wert hat, der natürlcih auf jeden Rechner unterschiedlich sein kann, je nach dem, was an dieser Stelle gerade im Speicher liegt.

ichbins 13. Dez 2005 12:30

Re: Programmergebnis je nach Rechner verschieden!?
 
vllt liegt es daran dass dein trunc manchmal nicht richtig interpretiert wird?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:39 Uhr.

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