Delphi-PRAXiS
Seite 6 von 17   « Erste     456 7816     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Delphi 11.2 released (https://www.delphipraxis.net/211379-delphi-11-2-released.html)

Alex_ITA01 9. Sep 2022 11:36

AW: Delphi 11.2 released
 
Danke Uwe, dass hat geholfen.
Ich habe bei der Willkommenseite unter Design Hell, einfach das dunkle Bild geladen.
Könnte man ja eigentlich auch in der Kladde IDE-Stil direkt mit auswählen.
Dann würde ich es intuitiv finden, wenn man das Design auswählt und gleichzeitig dazu den Hintergrund in der Willkommensseite. Naja...

Schade, ich hatte das neue Feature so verstanden, dass man die eigenen Units mit eigenen Farben versehen kann. Das hätte mal was ;-)

venice2 9. Sep 2022 14:40

AW: Delphi 11.2 released
 
Gut an dieser Version ist das 64Bit sehr streng ausgelegt ist.
Eine variable falsch zugewiesen dann geht nichts mehr.. ok. sei es drum.

Vorher kein Problem.
Delphi-Quellcode:
function WndProc(WinHandle: HWND; Msg: DWord; wP: WParam; lP: LParam): LRESULT; stdcall;



jetzt gibt es kein Handle mehr das Fenster wird auf diese weise nicht mehr erzeugt.

So ist es richtig.
Delphi-Quellcode:
function WndProc(WinHandle: HWND; Msg: UINT; wP: WParam; lP: LParam): LRESULT; stdcall;


Einiges an Arbeit aber gut das solche Flüchtigkeit Fehler nun erkannt werden.

himitsu 9. Sep 2022 14:45

AW: Delphi 11.2 released
 
DWORD und UINT sind doch aber das "Selbe" (in Delphi) ... wo ist da jetzt der funktionale Unterschied?

venice2 9. Sep 2022 14:54

AW: Delphi 11.2 released
 
Zitat:

Zitat von himitsu (Beitrag 1511495)
DWORD und UINT sind doch aber das "Selbe" (in Delphi) ... wo ist da jetzt der funktionale Unterschied?

Fakt ist das nur bei direkter Übergabe von UINT ein Fenster erzeugt wurde warum auch immer.
Habe mich selbst darüber gewundert.

Letztendlich ist es aber korrekt so.


vorher war FHSpinner immer 0

Delphi-Quellcode:
function TSkinSpinner.CreateWindow(ParentHandle: HWND): HWND;
var
  wc: TWndClassEx;

begin

  wc.cbSize := SIZEOF(wc);
  IsInitialized := GetClassInfoEx(hInstance, 'Spinner', wc);
  if not IsInitialized then
  begin
    wc.cbSize := SIZEOF(wc);
    wc.Style := CS_HREDRAW or CS_VREDRAW or CS_OWNDC;
    wc.lpfnWndProc := @WndProc;
    wc.cbClsExtra := 0;
    wc.cbWndExtra := 0;
    wc.hInstance := hInstance;
    wc.hIcon := 0;
    wc.hCursor := LoadCursor(0, IDC_ARROW);
    wc.hbrBackground := 0;
    wc.lpszMenuName := nil;
    wc.lpszClassName := 'Spinner';
    wc.hIconSm := wc.hIcon;
    if RegisterClassEx(wc) <> 0 then
      IsInitialized := True;
  end;

  if IsInitialized then
  begin
    Style := WS_POPUP or WS_VISIBLE;
    FHSpinner := CreateWindowEx(WS_EX_TOOLWINDOW or WS_EX_TOPMOST, 'Spinner', '', Style, 0, 0, 0,
      0, 0, 0, hInstance, nil);

  end;

  Result := FHSpinner;
end;

venice2 9. Sep 2022 15:02

AW: Delphi 11.2 released
 
Sorry so war es vorher!
Delphi-Quellcode:
function WinProc(WinHandle: HWND; Msg: DWORD; wParam, lParam: longint): LRESULT; stdcall;


Das war der Übeltäter!
Delphi-Quellcode:
wParam, lParam: longint

nicht
Delphi-Quellcode:
Msg: DWORD


Destotrotz ist UNIT Namentlich und von wert her korrekt.

Aber seltsam das D11 vorher das Problem nicht erkannt hat.

Uwe Raabe 9. Sep 2022 15:09

AW: Delphi 11.2 released
 
Zitat:

Zitat von venice2 (Beitrag 1511497)
Aber seltsam das D11 vorher das Problem nicht erkannt hat.

Vermutlich weil lpfnWndProc letztlich ein typloser Pointer ist und somit alles mögliche zugewiesen werden kann.
Delphi-Quellcode:
TFarProc = Pointer;
...
TFNWndProc = TFarProc;
...
  tagWNDCLASSEXW = record
    cbSize: UINT;
    style: UINT;
    lpfnWndProc: TFNWndProc;
    cbClsExtra: Integer;
    cbWndExtra: Integer;
    hInstance: HINST;
    hIcon: HICON;
    hCursor: HCURSOR;
    hbrBackground: HBRUSH;
    lpszMenuName: LPCWSTR;
    lpszClassName: LPCWSTR;
    hIconSm: HICON;
  end;

venice2 9. Sep 2022 15:15

AW: Delphi 11.2 released
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1511498)
Zitat:

Zitat von venice2 (Beitrag 1511497)
Aber seltsam das D11 vorher das Problem nicht erkannt hat.

Vermutlich weil lpfnWndProc letztlich ein typloser Pointer ist und somit alles mögliche zugewiesen werden kann.
Delphi-Quellcode:
TFarProc = Pointer;
...
TFNWndProc = TFarProc;
...
  tagWNDCLASSEXW = record
    cbSize: UINT;
    style: UINT;
    lpfnWndProc: TFNWndProc;
    cbClsExtra: Integer;
    cbWndExtra: Integer;
    hInstance: HINST;
    hIcon: HICON;
    hCursor: HCURSOR;
    hbrBackground: HBRUSH;
    lpszMenuName: LPCWSTR;
    lpszClassName: LPCWSTR;
    hIconSm: HICON;
  end;

Möglich aber irgendwas muß ja hier in 11.2 gedreht worden sein das nun kein Fenster btw. Handle auf dieser weise mehr erzeugt werden kann.
Aber gut es funktioniert ja wieder nach meinen Änderungen.

Uwe Raabe 9. Sep 2022 15:25

AW: Delphi 11.2 released
 
Hängt vielleicht hiermit zusammen: Support high-entropy 64-bit ASLR

Zitat:

Delphi 11.2 expands ASLR support for the Win64 platform. It adds the ability to randomize memory addresses at high locations. This makes 64-bit applications really take advantage of the full address space.

Note: This configuration might require you to clean up some of your code according to 64-bit rules.

himitsu 9. Sep 2022 15:33

AW: Delphi 11.2 released
 
Zitat:

; wParam, lParam: longint
Wo war das denn so?

Im Delphi sah ich bisher eigentlich überall schon seit Jahren LPARAM und WPARAM als Typen, welche seit iOS/Win64 auch nicht mehr Integer, sondern NativeInt sind.


Oder war es bei dir so deklariert?

Joar, dann ist es natürlich blöd, was Uwe grade sagte, da dort somit keine Compilerwarnung kein Compilerfehler kommen kann.


Tja, immer möglichst die "richtigen" Typen verwenden, auch wenn Anderes "jetzt" gehen mag. :stupid:
https://www.delphipraxis.net/211304-...ml#post1510883

venice2 9. Sep 2022 15:38

AW: Delphi 11.2 released
 
Zitat:

Oder war es bei dir so deklariert?
Ja und das wurde unter D11 nicht als Fehler erkannt in D11.2 hingegen schon.
Deshalb konnte ich mein Fenster nicht erstellen.

LongInt <> NativeInt
Das hätte in D11 nicht funktionieren dürfen. Tat es aber.
Ok ist ja jetzt bereinigt.

Zitat:

Tja, immer möglichst die "richtigen" Typen verwenden, auch wenn Anderes "jetzt" gehen mag.
Du hast natürlich recht
Ich verwechsle halt immer Datentypen mit Variablen :stupid:
Schreibe Variable meine aber Datentypen.:wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 Uhr.
Seite 6 von 17   « Erste     456 7816     Letzte »    

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