![]() |
Codeoptimierung verursacht probleme
Warum verursacht die Code Optimierung wenn eingeschaltet unterschiedliche
Ansichten der Grafischen Oberfläche? Wenn ausgeschaltet sieht alles normal aus wenn ein wird es Unansehnlich nicht so wie es soll. Wenn nötig hänge ich zwei Bilder an. gruss |
AW: Codeoptimierung verursacht probleme
Wenn die Code-Optimierung Probleme verursacht, dann liegt meiner Erfahrung nach zu 99% irgendwo ein Programmierfehler vor (Ausnahmen bestätigen natürlich die Regel). Insbesondere Buffer-Overflows werden manchmal erst durch die Optimierung enttarnt. Schalte am besten mal alle Überlaufprüfungen an - vielleicht hast du ja Glück und stößt direkt auf die verantwortliche Stelle.
|
AW: Codeoptimierung verursacht probleme
Zitat:
Nebenbei die DLL ist dann auch kleiner wenn die Optimierung eingeschaltet ist. Bringt mir nur nichts wenn sich dadurch die Ansichten verändern. Hänge mal die Bilder an. Ausgeschalteter zustand ist korrekt. EDIT: Er gibt mir einen ErangeError sagt aber nicht wo. :wall: gruss |
AW: Codeoptimierung verursacht probleme
Hallo,
MadExcept zeigt dir die Stelle an. Das muss aber auch mit der IDE gehen, wenn der RangeError kommt, F7 drücken. |
AW: Codeoptimierung verursacht probleme
Zitat:
Wenn der Dialog erscheint zeigt er mir nichts wenn ich F7 drücke mit D2010 gruss |
AW: Codeoptimierung verursacht probleme
Beispiel..
Delphi-Quellcode:
SetRect(pr^[pData^.rdh.nCount], M, J, I, J + 1);
nCount ist DWORD die Übergabe muss aber Integer sein. Es kracht wenn die Werte minus enthalten Das
Delphi-Quellcode:
SetRect(pr^[Integer(pData^.rdh.nCount)]
bringt nichts. Das ist der Grund warum ich keine Bereichs Prüfung einschalte. gruss |
AW: Codeoptimierung verursacht probleme
Zitat:
Außer natürlich, du hast ERangeError irgendwann mal ganz klugerweise auf ignorieren gestellt. |
AW: Codeoptimierung verursacht probleme
Zitat:
Und nein bei mir werden alle Native BS Exceptions behandelt. Mit MadExcept geht's aber ich kann die ERangeError's nicht behandeln. Ich speicher verschiedene Datentypen in propertys wenn dieses Property den Bereich eines Integer verlässt also minus wird kracht es das kann ich aber nicht ändern.
Delphi-Quellcode:
procedure TSkinEngine.SetProperty(WinHandle: HWND; Item: integer; V: integer);
begin if (Item > 0) and (Item < EXTEND_EXTRA + 1) and (WinHandle <> 0) then SetWindowLong(WinHandle, (Item - 1) * 4, V); end;
Delphi-Quellcode:
Sagen wir mal das Property das gelesen wird ist ein HDC und dieses hat einen negativen wert -123134345
function TSkinEngine.GetProperty(WinHandle: HWND; Item: integer): integer;
begin Result := 0; if (Item > 0) and (Item < EXTEND_EXTRA + 1) and (WinHandle <> 0) then Result := GetWindowLong(WinHandle, (Item - 1) * 4); end; Dann tritt ein ERangeError auf. Ich kann aber bei GetWindowLong kein DWORD zurückgeben und es erwartet einen Integer für Index. Ich wüsste jetzt nicht wie ich das behandeln sollte. Erweitertes Beispiel:
Delphi-Quellcode:
SkinEngine.SetProperty(Handle, PROP_TEXT_COLOR, TextCol);
TextCol wird jetzt in das Property gespeichert. TextColor ist COLORREF also DWord kann minus werte enthalten und das verletzt die Untergrenze (Integer). outofbounds gruss |
AW: Codeoptimierung verursacht probleme
Zitat:
Delphi-Quellcode:
var
KlugbenanntesRect: TRect; RectCount: DWORD; ... begin SetRect(KlugbenanntesRect, M, J, I, J + 1); RectCount := pData^.rdh.nCount; if (RectCount > 0) and (RectCount < Length(pr^)) then begin pr^[RectCount] := KlugbenanntesRect; end; end; |
AW: Codeoptimierung verursacht probleme
Zitat:
Der Datentypen mismatch halt. Siehe die anderen Beispiele weiter oben. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 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-2025 by Thomas Breitkreuz