Entwickler-Ecke

Sonstiges (Delphi) - Speicher freigeben


mcbrunox - Mo 24.02.03 06:42
Titel: Speicher freigeben
aufgefallen ist mir in meinem programm, wenn ich die Form lade das sie gleich 18 MB in anspruch nimmt.
Nun dacht ich mir probiers mit form7.free, aber das klappt so nicht, laut prozessmanagers von windows hat sich der speicher nicht freigegeben.
an was liegt das ?


Anonymous - Mo 24.02.03 07:03

Du muß schon ein wenig mehr Infos liefern. Was ist alles in der Form, welche Objekte wurden initialisiert. 18 MB ist schon ein wenig viel, aber nicht viel wenn es vor Grafik strotzt.


mcbrunox - Mo 24.02.03 07:28

es werden 2 charts geladen


Anonymous - Mo 24.02.03 08:21

Das ist eine menge Info. Ich lasse es mit dem Antworten. Das wird sonst wieder eine von den Beiträgen wo man nach 20 mal hin und her ein Lösung anbietet und plötzlich kommt der Frager mit Zusatzinfos.

Wenn du also ein Problem hast, aber keine Lust hast dein Programm mit mehr aus vier Wörtern zu beschreiben, dann hoffe ich das sich andere auf die Diskusion einlassen.


mcbrunox - Mo 24.02.03 08:43


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
unit Unit7;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls,TeeProcs, TeEngine, Chart, MXGRAPH, teefunci, LbButton,
  StdCtrls, Series, ComCtrls, TabNotBk;
type
  TForm7 = class(TForm)
    LbButton1: TLbButton;
    TabbedNotebook1: TTabbedNotebook;
    chart1: TDecisionGraph;
    Series1: TLineSeries;
    chart2: TDecisionGraph;
    Series2: TLineSeries;
    ComboBox1: TComboBox;
    Edit1: TEdit;
    UpDown1: TUpDown;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Edit2: TEdit;
    GroupBox1: TGroupBox;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    LbButton2: TLbButton;
    LbButton3: TLbButton;
    procedure LbButton1Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
    procedure FormActivate(Sender: TObject);
    procedure TabbedNotebook1Change(Sender: TObject; NewTab: Integer;
      var AllowChange: Boolean);
    procedure FormCreate(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure RadioButton4Click(Sender: TObject);
    procedure loadchart;
    procedure LbButton2Click(Sender: TObject);
    procedure LbButton3Click(Sender: TObject);
  private
    procedure chartinit;
    function IsDoublette(AText: String; AStrings: TStrings): Boolean;

    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type Tzeit = array[2003..5000,1..12, 1..31] of int64;
     Tkb = array[2003..5000,1..12, 1..31] of int64;
var
  Form7: TForm7;
   zeit:tzeit;
    zkb:tkb;
    mgb,low:boolean;

implementation
...

ok hoffe das reicht als info


mcbrunox - Mo 24.02.03 08:47

habs die 2 array's fressen den speicher...wie kann ich das anders schreiben oder wieder freigeben ?


mcbrunox - Mo 24.02.03 08:51

habs eingesehen mit word statt int64 spar ich wieder 10 Mb ein


mcbrunox - Mo 24.02.03 08:59

doch nicht,ich brauch int64 sonst stimmt die statistik wieder nicht.


Delete - Mo 24.02.03 09:24

Wenn du nicht den absoluten Wert brauchst, rechne ihn, bevor du ihn in das Array einträgst, in Prozent um. Dann kommst du sogar mit dem Datentyp Byte aus.