![]() |
AW: Optimierung Unverständlich
Zitat:
Sage mir wie ich TRect das ja in den jeweiligen Units nehme ich an, korrekt definiert ist für die Optimierung (einen Fehler beheben soll) ?
Delphi-Quellcode:
Wie oder wo soll ich jetzt "rc" korrigieren wenn hier falsch werte bei der Optimierung übergeben werden.
var
rc: TRect; begin GetWindowRect(WinHandle, rc); end; Ist wohl unmöglich denke ich mal. Wenn also GetWindowRect mit eingeschalteter Optimierung undefinierte Werte für "rc" liefert was soll ich dann tun? Denke mal ebenfalls nichts. Wenn man solche Werte wie auf den Bildern bekommt wird man wohl von seinem Fenster nichts sehen. ;) |
AW: Optimierung Unverständlich
Nuja. Delphi ist halt nicht gleich Delphi.
Man kann komplett WinApi oder auf integrierte Fassungen zurückgreifen, was dich dann enttäuschen mag. Als erfahrener api Anwender rate ich dir, Schuster bleib bei dein leisten. Du weißt was du tust, bleib dabei:-) |
AW: Optimierung Unverständlich
Zitat:
Dein Beitrag ist undefiniert genauso wie das Problem mit dem Optimieren. Es trägt nichts zu meinen Problem bei! Hauptsache kommentiert wie auch immer. |
AW: Optimierung Unverständlich
Naja, Du hast den Fehler ja bereits lokalisieren und korrigieren können. Damit kommen doch gar nicht mehr so viele Stellen in Frage. GetWindowRect ist eine boolsche Funktion. Du könntest also den Rückgabewert prüfen. Vermutlich wird dieser „false“ sein, wenn Dein Rect falsch befüllt wird. Das wäre ein Indiz dafür, dass das Fenster-Handle zu diesem Zeitpunkt ungültig ist.
//Edit: Aus der Dokumentation: „To get extended error information, call GetLastError.“ Es gibt also schon Dinge, die man tun könnte, wenn falsche Werte zurückkommen. |
AW: Optimierung Unverständlich
Zitat:
Das WinHandle selbst ist dieses von der Anwendung die läuft ja im Hintergrund und das Fenster das ich öffne ist ein Dialog darüber. Und das schlägt bei der Optimierung fehl. Wäre das Handle falsch würde es auch ohne Optimierung falsche Werte liefern tut es aber nicht. :) Deshalb verstehe ich das auch nicht.
Delphi-Quellcode:
GetWindowRect(DialogHandle, rc); ClientToScreen(DialogHandle, p); TMDBInfoDlgCont := CTRL_SpriteContainerCreate; TMDBInfoDlgCont.Left := p.x + 30; TMDBInfoDlgCont.Top := p.Y + 60; TMDBInfoDlgCont.Width := 900; TMDBInfoDlgCont.Height := 506; TMDBInfoDlgCont.AnchorMode := ANCHOR_HEIGHT_WIDTH; TMDBInfoDlgCont.DwStyle := WS_POPUP or WS_CLIPSIBLINGS or WS_CLIPCHILDREN; TMDBInfoDlgCont.DwExStyle := WS_EX_TOOLWINDOW; TMDBInfoDlgContH := TMDBInfoDlgCont.CreateWindow(DialogHandle, hInstance); if TMDBInfoDlgContH <> 0 then // Handle ist gültig begin bmW := 0; bmH := 0; GetWindowRect(TMDBInfoDlgContH, lpr); // TRect liefert undefinierbare Werte bei eingeschalteter Optimierung, sonst nicht. Zitat:
Und es werden korrekte werte zurück gegeben. Ich halte nochmal fest. Es funktioniert ohne Optimierung mit leider nicht. Also kann es am Code definitiv nicht liegen denn dann dürfte beides nicht gehn. |
AW: Optimierung Unverständlich
Zitat:
Wenn es also in deinem Programm ein Problem gibt, das nur mit Optimierung auftritt, dann liegt es vermutlich an deinem Programm. Ein Programm, das manchmal richtig funktioniert, ist noch nicht unbedingt sinnvoll einsetzbar. Erst ein Programm, was immer (oder zumindest fast immer) richtig funktioniert ist wirklich gut ;-) |
AW: Optimierung Unverständlich
Zitat:
Da du nun weißt wo der Fehler auftritt: Kannst du nicht den ganzen anderen Code rauswerfen um dann hier ein Projekt zu posten, bei dem der Fehler nachvollziehbar ist? Ich bin mir sicher, dass dann schnell die Ursache klar wäre. |
AW: Optimierung Unverständlich
Zitat:
|
AW: Optimierung Unverständlich
Zitat:
Nochmal wenn der Code falsch wäre würde es auch ohne Optimierung nicht funktionieren. Trotz allem Danke. EDIT: Zitat:
Delphi-Quellcode:
Kein Fehler läuft durch aber Koordinaten sind falsch.
if GetWindowRect(TMDBInfoDlgContH, lpr) then
begin //... end else raise Exception.Create(SysErrorMessage(GetLastError)); Ich lasse es jetzt ohne Optimierung macht keinen sinn. |
AW: Optimierung Unverständlich
Das ist natürlich deine Entscheidung. Ich kann nur anbieten es zu analysieren. Im Zweifelsfall lohnt ein Vergleich des generierten Assemblercodes.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:01 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