class, static - Unterschied

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Mathias
Beiträge: 6906
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

class, static - Unterschied

Beitrag von Mathias »

Was ist der Unterschied zwischen diesen beiden deklarationen ?

Code: Alles auswählen

class var  str: string;
str: string; static; 
Das Ergebniss ist in beiden Fällen das gleiche ?
Einziger Unterschied, der JCF-Formatierer versteht nur die erste Variante.

Code: Alles auswählen

program project1;
 
uses
  SysUtils;
 
type
  TTest = class(TObject)
    class var  str: string;
    // str: string; static;
    // str: string;  // Hier ist es klar, jeder Erbe bekommt ein eigener String.
    constructor Create(s: string);
    procedure Ausgabe;
  end;
 
  constructor TTest.Create(s: string);
  begin
    inherited Create;
    str := s;
  end;
 
  procedure TTest.Ausgabe;
  begin
    Writeln(str);
  end;
 
var
  Test: array[0..10] of TTest;
  i: integer;
 
begin
  for i := 0 to 10 do begin
    Test[i] := TTest.Create('String: ' + IntToStr(i));
  end;
  for i := 0 to 10 do begin
    Test[i].Ausgabe;
  end;
  for i := 0 to 10 do begin
    Test[i].Free;
  end;
  Readln;
end.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: class, static - Unterschied

Beitrag von theo »


Mathias
Beiträge: 6906
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: class, static - Unterschied

Beitrag von Mathias »

So wie ich es verstanden habe, kann man mit class var mehrere Variablen auf einmal statisch deklarieren. Und zeitgemässer ist dies auch.

Code: Alles auswählen

   class var
    str: string;
    str2: string;   
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten