AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Zu viele Parameter bei SizeOf
Thema durchsuchen
Ansicht
Themen-Optionen

Zu viele Parameter bei SizeOf

Ein Thema von venice2 · begonnen am 19. Okt 2021 · letzter Beitrag vom 20. Okt 2021
 
venice2
(Gast)

n/a Beiträge
 
#1

Zu viele Parameter bei SizeOf

  Alt 19. Okt 2021, 20:24
Ich will meine GDIPClock auf 64 Bit umlegen.
Soweit geht alles bis auf diese Probleme.

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.

Das Zweite
Delphi-Quellcode:
  if Msg.Msg = WM_SizeAdj then
  begin
    ScaleFactor := Msg.WParam / 100;
    Timer1Timer(Self);
  end;
ScaleFactor ist innerhalb des implementation Teil als
  ScaleFactor: double = 0.7; und in der class TAdjustForm
Delphi-Quellcode:
    public
    { Public declarations }
     MainHandle : HWND;
     Transparency : integer;
     ScaleFactor: Double; // hier
     procedure ApplyLocalLanguage;
  end;
definiert.
jetzt mault er mir beim Kompilieren rum
Zitat:
[dcc64 Fehler] ClockUnit.pas(646): E2129 Einer Nur-Lesen Eigenschaft kann kein Wert zugewiesen werden
Ich denke der Compiler verwendet dann die Funktion ScaleFactor aus VCL.Controls

Keine Ahnung was das alles wieder soll.
Kann man nicht mal einfache Variablen übergeben ohne das die VCL dazwischen Funkt? Oder diese für sich reserviert?
Einer der Dinge warum ich damit nicht gerne arbeite.
Die Uses!
Delphi-Quellcode:
uses
  Winapi.Windows,
  Winapi.Messages,
  Winapi.ShellAPI,
  System.Win.Registry,
  System.UITypes,
  System.SysUtils,
  System.Classes,
  System.Math,
  VCL.Graphics,
  VCL.Forms,
  VCL.Controls,
  VCL.Dialogs,
  VCL.ExtCtrls,
  VCL.Menus,
  VCL.AppEvnts,
  uGDIUnit, uAARotateFast, uGlobal;
EDIT:
OK geht jetzt.
Habe den ScaleFactor von Global in die Classe TClockForm verschoben und die Default Value in FormCreate zugewiesen.
System.SizeOf(TNotifyIconData) geht jetzt auch habe meine Ressourcen Datei dafür angepaßt. Icon wird jetzt angezeigt.

Trotzdem Müll das sich die VCL überall reinhängt.
Wenn man Variablen nicht verwenden darf warum kennzeichnet man diese nicht einfach?
Die haben mir meine "ScaleFactor" Variable geklaut und unter Controls eingefügt. Frechheit ist das!

Geändert von venice2 (19. Okt 2021 um 21:22 Uhr)
  Mit Zitat antworten Zitat
 


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 08:46 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