Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi SizeOf(memory) Problem(chen) (https://www.delphipraxis.net/43084-sizeof-memory-problem-chen.html)

Clane 28. Mär 2005 22:22


SizeOf(memory) Problem(chen)
 
hey

also was zum teufel is hierdran falsch ... angeblich is memory nich deklariert

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Label5.Caption := IntToStr(SizeOf(memory));
end;
und hier der zusammenhang mit allen drum und dran (hat nich mit meimen keygen projekt zu tun)

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, ExtCtrls, ShellApi, Menus;

const
  WM_TRAYEVENT = WM_USER + 1337;
 
type
  TForm1 = class(TForm)
    ProgressBar1: TProgressBar;
    Button2: TButton;
    Timer1: TTimer;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    PopupMenu1: TPopupMenu;
    Clos1: TMenuItem;
    Label4: TLabel;
    Label5: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Clos1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure TrayEvent(var msg : TMessage);message WM_TRAYEVENT;
  public
  end;

var
  Form1: TForm1;
  ti: tnotifyicondata;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
  x, y : real;
  memory: TMemoryStatus;
  Auslastung: integer;
begin
  memory.dwLength := SizeOf(memory);
  GlobalMemoryStatus(memory);
  x := memory.dwTotalPhys - memory.dwAvailPhys;
  y := memory.dwTotalPhys;
  Auslastung := round(((x/y)*100));
  ProgressBar1.Position := Auslastung;
  Label3.Caption := IntToStr(Auslastung);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  with ti do
  begin
    cbSize := SizeOf(ti);
    Wnd := Handle;
    uID := 100;
    uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
    uCallBackMessage := WM_TRAYEVENT;
    hIcon := Application.Icon.Handle;
    szTip := 'RAM Auslastung';
  end;
  Shell_NotifyIcon(NIM_ADD,@ti);
end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
  Shell_NotifyIcon(NIM_DELETE,@ti);
end;

procedure TForm1.TrayEvent(var msg: TMessage);
var
  pt : TPoint;
begin
  case msg.lparamlo of
    WM_RBUTTONDOWN :
      begin
        GetCursorPos(pt);
        SetForeGroundWindow(handle);
        PopupMenu1.popup(pt.x,pt.y);
      end;
  end;
end;

procedure TForm1.Clos1Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    Label5.Caption := IntToStr(SizeOf(memory));
end;

end.
oben steht auch SizeOf(memory) und da is alles in ordnung ... hier unten in der letzten przedur sagt der mir ne mach ich net ?? was is daran falsch ??

MfG. PBiggi

jfheins 28. Mär 2005 22:24

Re: SizeOf(memory) Problem(chen)
 
Logisch, woher soll ers denn auch kennen ... in der oberen Prozedur ist memory ja dekllriert, aber unten ja nicht.

:arrow: globale variable deklarieren

:arrow: im private Teil der Form

:arrow: in der prozedur deklarieren

:zwinker:

moritz 28. Mär 2005 22:25

Re: SizeOf(memory) Problem(chen)
 
Das Problem ist, dass Memory in deinem Fall eine lokale Variable ist, die nur in der Funktion, in der sie definiert wurde zur Verfügung steht. In der Funktion, in der du sie brauchst, ist sie nicht definiert und steht deswegen auch nicht zur Verfügung. Du solltest dir ein bisschen Literatur zu OOP durchlesen, das sind Standartsachen, die man braucht. Eine Möglichkeit wäre es, memory als globale Variable zu definieren, entweder direkt in der Klasse des Formulars (Da am besten im private-Teil), oder global in der Unit, also im interface-Teil der Unit.

Gruß

Luckie 28. Mär 2005 22:26

Re: SizeOf(memory) Problem(chen)
 
Oder kurz: memory ist eine lokale Variable deines Timer Ereignisses und somit nur dort sichtbar und gültig.

Clane 28. Mär 2005 22:32

Re: SizeOf(memory) Problem(chen)
 
jo danke für eure schnellen antworten ... wo hab ich heute wieder meinen kopf .... :roll: hätte mir auffallen müssen

MfG. PBiggi


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:04 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