Speicher löschen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Speicher löschen

Beitrag von Michl »

Wenn ich mich richtig erinnere (den Quellcode habe ich nicht mehr), könntest du doch einfach bei deinem "Programmende", wo du fragst "noch einmal j/n", bei der Wahl eines erneuten Durchgangs, die Variablen alle neu initialisieren.

Also:
- Abfrage j/n
- Eingabe "j"
- jetzt die Abfrage:

Code: Alles auswählen

if "Variable" = 'j' then goto Anfang; // weis nicht mehr wie das genau war... 
ersetzen durch

Code: Alles auswählen

if "Variable" = 'j' then begin
  InitialisiereMeineVariablen;  //diese Procedure kannst du einfach vor deiner Hauptroutine einfügen
  goto Anfang; 
end;
So nund noch die Prozedur InitialisiereMeineVariablen erstellen:

Code: Alles auswählen

procedure InitialisiereMeineVariablen;
begin
  //1. Variable:=0;
  //2. Variable:=0;
  //3. Variable:=4;
  //usw, wie du das brauchst
end;
... und schon kommst du etwas weg von den goto-Befehlen und dein Programm funktioniert trotzdem noch.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

majujajo
Beiträge: 11
Registriert: Do 5. Sep 2013, 18:11

Re: Speicher löschen

Beitrag von majujajo »

Okay danke! Dann werde ich ja wohl doch nicht drum rum kommen..

wp_xyz
Beiträge: 5169
Registriert: Fr 8. Apr 2011, 09:01

Re: Speicher löschen

Beitrag von wp_xyz »

ich bin auf der Suche nach einem Befehl, um den Speicher sämtlicher Variablen und Arrays zu löschen bzw auf Null zu setzen
Packe alle deine Variablen in einen Record und rufe dann für diesen Record FillChar auf:

Code: Alles auswählen

 
type
  TVariablen = record
    Variable1: Integer;
    Variable2: Double;
    Variable3: String;
  end;
 
var
  Variablen: TVariablen;
 
procedure AlleVariablenLoeschen;
begin
  FillChar(Variablen, SizeOf(Variablen), 0);
end:
 

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Speicher löschen

Beitrag von mse »

wp_xyz hat geschrieben:

Code: Alles auswählen

 
procedure AlleVariablenLoeschen;
begin
  FillChar(Variablen, SizeOf(Variablen), 0);
end:
 
Besser

Code: Alles auswählen

 
procedure AlleVariablenLoeschen;
begin
 finalize(variablen);
  FillChar(Variablen, SizeOf(Variablen), 0);
end:
 
Sonst gibt es memory leaks mit referenzgezählten Typen.

majujajo
Beiträge: 11
Registriert: Do 5. Sep 2013, 18:11

Re: Speicher löschen

Beitrag von majujajo »

Okay, danke! Ich werde mal sehen wie ich es umsetze..

Antworten