![]() |
Dummy-Konstanten
Ich will sowas machen:
Delphi-Quellcode:
und jetzt will ich für 1,2,3... "Dummys" vergeben, also zb WAS_BEENDEN, WAS_DATEILADEN, WAS_NEUZEICHNEN... (so ähnlich wie bei den Windows WM_XXX - Messages). Wenn ich jetzt aber die Konstanten global deklariere, dann meckert delphi im case-Block immer noch, dass ihm das nicht konstant genug wäre....
procedure TuWas(Was: cardinal);
begin case was of 1: ... 2: ... 3: ... .... else end; end; |
Häh? Wie hast Du die denn deklariert. Ich habe damit keine Probleme.
...:cat:... |
Code:
program bla;
uses Windows, Messages; const MC_case1: cardinal = 0; MC_case2: cardinal = 1; MC_case3: cardinal = 2; function MessageLoop(hWnd: HWND; uMsg: UINT; wParam: wParam; lParam: LParam): lresult; stdcall; begin Result := 0; case uMsg of WM_DESTROY: PostQuitMessage(0); WM_CREATE: begin //nix bis jetzt end; else Result := DefWindowProc(hWnd, uMsg, wParam, lParam); end; end; procedure mc(CodeNR: cardinal); begin case CodeNR of MC_case1: begin {irgendwas} end; MC_case2: begin {irgendwas} end; MC_case3: begin {irgendwas} end; end; end; var WindowClass: TWndClassEx = ( cbSize : SizeOf(TWndClassEx); Style : CS_HREDRAW or CS_VREDRAW; lpfnWndProc : @MessageLoop; cbClsExtra : 0; cbWndExtra : 0; hbrBackground : COLOR_APPWORKSPACE; lpszMenuName : nil; lpszClassName : 'myClass'; hIconSm : 0; ); msg: TMsg; begin WindowClass.hInstance := hInstance; WindowClass.hCursor := LoadCursor(0, IDC_ARROW); WindowClass.hIcon := LoadIcon(0, IDI_APPLICATION); RegisterClassEx(WindowClass); CreateWindowEX(0, 'myClass', 'capt', WS_CAPTION or WS_VISIBLE, 100, 100, 200, 125, 0, 0, hInstance, nil); while GetMessage(msg,0,0,0) do begin TranslateMessage(msg); DispatchMessage(msg); end; ExitCode := msg.wParam; end. |
Das kommt noch aus der Zeit, als man über
Delphi-Quellcode:
Vordefinierte Variablen definiert hat. Obwohl da const steht, galt es früher als initialisierte Variable. Das ist Vergangenheit, dürfte sich aber als "heutiger Bug" manifestiert haben. Einfach die Defninitionen abändern in
const
MC_case1: cardinal = 0; MC_case2: cardinal = 1; MC_case3: cardinal = 2;
Delphi-Quellcode:
, um das Cardinal künmmert sich Delphi, wenn nötig.
const
MC_case1 = 0; MC_case2 = 1; MC_case3 = 2; ...:cat:... |
Tatsächlich. Klappt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04: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