Einzelnen Beitrag anzeigen

tommie-lie
(Gast)

n/a Beiträge
 
#39
  Alt 3. Jun 2003, 17:36
Zitat von MathiasSimmack:
Das habe ich beschrieben. Wenn du den alten Record nochmals kürzt, dann kann das nicht klappen. Und genau das passiert bei D5, wenn man ohne Versionsprüfung kürzt.
Okay, es hörte sich so an, als sei es mein Vorshclag gewesen, das ganze ohne Versionsprüfung laufen zu lassen, und das war es nicht.

Zitat:
Doch, die Begründung liegt in der Delphi-Version, wie du ja auch selbst nun feststellst:
Nein.
Im Prinzip sind es die veralteten Header von Delphi5. würde man die windows.pas (oder in welcher Unit auch immer TOpenFilename stehen mag, bin zu faul zum nachgucken) entsprechend ändern und neu kompilieren, würde es auch so klappen. Es ist also nicht direkt das Delphi dran schuld, sondern nur die veralteten, vorhandenen Header (man beachte das Wort "veraltet", es ist hier vollkommen zurecht am Platze und wird später noch mal genutzt werden)

Zitat:
Zitat:
Im Prinzip ist es also die reine Unzulänglichkeit Seitens Delphi5, daß MathiasSimmacks selbstkompilierte Version unter Win98 läuft und reiner Zufall, das sie es noch unter NT5 (also Win2k) tut.
Nein, das ist Quatsch! Luckie und ich haben uns über das Problem unterhalten, und auf meine Bitte hin hat er mir den Quelltext der Version 4.0 geschickt. Dieser Quelltext enthielt aber lediglich die Angabe:
ofn.lStructSize := SizeOf(TOpenFilename); Ich denke, du weißt wohl selbst, warum es so funktioniert hat - Es ist der Quellcode! Kompiliert Luckie den mit seinem Delphi 6, dann wird bei ihm das erweiterte Record benutzt, und es funktioniert. Kompiliere ich den selben Quellcode mit meinem Delphi 5, dann wird bei mir das alte Record benutzt. Da aber hier noch nichts gekürzt wurde, funktioniert es logischerweise bei mir auch.
Aber es ist trotzdem eine Unzulänglichkeit. Ich weiß jetzt nicht genau, was der Pointer und die beiden DoubleWords für eine Funktion haben (ich hab' nichtmal mehr die Namen im Kopf), aber diese Funktionalität der Struktur ist unter D5 ohne Änderungen nicht nutzbar. Das sehe ich als unzulänglichkeit an, sobald man diese drei Werte benutzen will/muss, und daher verdankt man es dieser Unzulänglichkeit, das es dann auch wieder utner Win98 läuft.
Genauso sieht es mit Win2k und XP aus. Ich weiß nicht, wozu Windows intern die Stukturgrößen nochmal als Parameter übergeben haben will und was es damit anstellt, aber es könnte unter irgendwelchen Umständen mit dieser (zu kleinen!) Strukturgröße zu Fehlern kommen, die mit der richtigen Strukturgröße eben nciht geschehen sind. Es ist also auch reiner Zufall, daß es mit der kleinen (und alten) Struktur auch unter Windows2k und WindowsXP funktioniert, die beiden könnten sich genausogut als untoleranter erweisen.

Zitat:
Von Unzulänglichkeiten oder gar Zufällen kann also nicht die Rede sein.
Doch. Zumindest von meinem Standpunkt aus. Sicherer wäre es natürlich, die Strukturwerte einzeln zu addieren anstatt ein pauschales SizeOf zu verwenden, oder man müsste nochmal per IFDEF die Delphi-Version abfragen.
Fakt ist nunmal, daß etwas, was ich unter D5 normalerweise als Einschränkung oder Fehler bezeichnen würde, dem Programm dazu verhilft, unter Win98 zu laufen.
  Mit Zitat antworten Zitat