Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
 
Delphi 6 Professional
 
#4

AW: Zu viele Parameter bei SizeOf

  Alt 20. Okt 2021, 08:40
Hmm..

Das erste!
Delphi-Quellcode:
procedure SetTrayIcon(hWnd: hWnd; IconID: Integer; TipMsg: PChar;
  Update: Boolean);
begin
  with NIconD do
  begin
    cbSize := SizeOf(TNotifyIconData); // funktioniert unter 32 Bit
    uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
    uCallbackMessage := WM_TRAYEVENT;
    uID := $0815;
    hIcon := LoadIcon(hInstance, MAKEINTRESOURCE(IconID));
    lStrCpy(szTip, TipMsg);
    Wnd := hWnd;
  end;

  if not Update then
    Shell_NotifyIcon(NIM_ADD, @NIconD)
  else
    Shell_NotifyIcon(NIM_MODIFY, @NIconD);

end;
cbSize := SizeOf(TNotifyIconData); // funktioniert nicht mehr unter 64 Bit
erzählt mir immer etwas von
Zitat:
[dcc64 Fehler] ClockUnit.pas(249): E2034 Zu viele Parameter
Bei SizeOf..
Unter 64 Bit springt er hier rein. (ShellAPI) bei der Suche der Declaration.
Delphi-Quellcode:
  _NOTIFYICONDATAW = record
  private
    class constructor Create;
  public
    class function SizeOf: Integer; static;
  public
    cbSize: DWORD;
anstelle SizeOf von System zu verwenden.. Was soll der Blödsinn?
Gebe ich System.SizeOf(TNotifyIconData); an gibt es keinen Fehler aber ein Icon wird auch nicht erstellt.

Dir ist bewust, dass Du dieses Problem selber verursachst hast?

Delphi-Quellcode:
  with NIconD do
  begin
    cbSize := SizeOf(TNotifyIconData); // funktioniert unter 32 Bit
Durch das WITH wird nunmal das 'SizeOf' von 'NIconD' verwendet und nicht das von System...
Wenn diese Abweichen, dann wird gemeckert.....

Deshalb:
Ein grundsätliche Regel (welche von vielen empfohlen wird):
KEIN 'WITH' verwenden!
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat