AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Optimierung Unverständlich

Ein Thema von venice2 · begonnen am 19. Feb 2021 · letzter Beitrag vom 21. Feb 2021
Antwort Antwort
Seite 2 von 3     12 3      
venice2
(Gast)

n/a Beiträge
 
#11

AW: Optimierung Unverständlich

  Alt 20. Feb 2021, 20:54
Zitat:
So oder so, kann es nicht schaden den Fehler zu finden
Theoretisch ja, Praktisch nein.

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:
var
  rc: TRect;
begin
  GetWindowRect(WinHandle, rc);

end;
Wie oder wo soll ich jetzt "rc" korrigieren wenn hier falsch werte bei der Optimierung übergeben werden.
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.

Geändert von venice2 (21. Feb 2021 um 21:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Optimierung Unverständlich

  Alt 20. Feb 2021, 21:05
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
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#13

AW: Optimierung Unverständlich

  Alt 20. Feb 2021, 21:10
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
Willst du mir etwas bestimmtes sagen?
Dein Beitrag ist undefiniert genauso wie das Problem mit dem Optimieren.

Es trägt nichts zu meinen Problem bei! Hauptsache kommentiert wie auch immer.

Geändert von venice2 (20. Feb 2021 um 21:15 Uhr)
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: Optimierung Unverständlich

  Alt 20. Feb 2021, 21:15
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.
Daniel R. Wolf
mit Grüßen aus Hamburg

Geändert von Daniel (20. Feb 2021 um 21:18 Uhr)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#15

AW: Optimierung Unverständlich

  Alt 20. Feb 2021, 21:20
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.
Es ist nicht ungültig da es direkt davor erstellt wird.
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:
Es gibt also schon Dinge, die man tun könnte, wenn falsche Werte zurückkommen.
Ja. Sinnvoll wenn es bei beiden varianten ein Problem gäbe aber ohne Optimierung ist das Handle sowie der Rect richtig.
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.

Geändert von venice2 (20. Feb 2021 um 21:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#16

AW: Optimierung Unverständlich

  Alt 20. Feb 2021, 21:48
Zitat:
Es gibt also schon Dinge, die man tun könnte, wenn falsche Werte zurückkommen.
Ja. Sinnvoll wenn es bei beiden varianten ein Problem gäbe aber ohne Optimierung ist das Handle sowie der Rect richtig.
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.
Normalerweise wird da eher umgekehrt ein Schuh draus: Die Optimierung ist seit Jahrzehnten verfeinert und verbessert um keine Bugs in korrekt geschriebene Programme einzufügen.
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
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.348 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Optimierung Unverständlich

  Alt 20. Feb 2021, 21:53
Also kann es am Code definitiv nicht liegen denn dann dürfte beides nicht gehn.
Beispielsweise könnte der Typ von TMDBInfoDlgContH falsch sein und so der Wert abgeschnitten werden, wenn der Variablentyp zu klein für den Wert ist. Wie gesagt, das ist nur ein Beispiel, aber es gibt schon diverse Varianten, bei denen der Code eigentlich gar nicht korrekt ist, aber zufällig doch geht.

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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#18

AW: Optimierung Unverständlich

  Alt 20. Feb 2021, 21:57
Zitat:
Es gibt also schon Dinge, die man tun könnte, wenn falsche Werte zurückkommen.
Ja. Sinnvoll wenn es bei beiden varianten ein Problem gäbe aber ohne Optimierung ist das Handle sowie der Rect richtig.
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.
Normalerweise wird da eher umgekehrt ein Schuh draus: Die Optimierung ist seit Jahrzehnten verfeinert und verbessert um keine Bugs in korrekt geschriebene Programme einzufügen.
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
Das hilft mir nicht weiter. Aber Bitte..
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#19

AW: Optimierung Unverständlich

  Alt 20. Feb 2021, 21:58
Also kann es am Code definitiv nicht liegen denn dann dürfte beides nicht gehn.
Beispielsweise könnte der Typ von TMDBInfoDlgContH falsch sein und so der Wert abgeschnitten werden, wenn der Variablentyp zu klein für den Wert ist. Wie gesagt, das ist nur ein Beispiel, aber es gibt schon diverse Varianten, bei denen der Code eigentlich gar nicht korrekt ist, aber zufällig doch geht.

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.
TMDBInfoDlgContH: HWND;

Nochmal wenn der Code falsch wäre würde es auch ohne Optimierung nicht funktionieren.
Trotz allem Danke.

EDIT:
Zitat:
Es gibt also schon Dinge, die man tun könnte, wenn falsche Werte zurückkommen.
Habe es mal getestet
Delphi-Quellcode:
    if GetWindowRect(TMDBInfoDlgContH, lpr) then
    begin
      //...
    end else
    raise Exception.Create(SysErrorMessage(GetLastError));
Kein Fehler läuft durch aber Koordinaten sind falsch.
Ich lasse es jetzt ohne Optimierung macht keinen sinn.

Geändert von venice2 (20. Feb 2021 um 22:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.348 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: Optimierung Unverständlich

  Alt 20. Feb 2021, 22:15
Das ist natürlich deine Entscheidung. Ich kann nur anbieten es zu analysieren. Im Zweifelsfall lohnt ein Vergleich des generierten Assemblercodes.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:07 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