Einzelnen Beitrag anzeigen

Benutzerbild von Wuaegner
Wuaegner

Registriert seit: 8. Feb 2004
406 Beiträge
 
Delphi 6 Enterprise
 
#12

Re: Frage zu .free bei Klassen

  Alt 20. Jul 2005, 19:32
Delphi-Quellcode:
 type
  TStringManager = class
  private
   FNummernListe : TStringlist;
   FOrteListe: TStringList;
   FDatumsListe: TStringList;
   FLaengenListe: TStringList;
   FKostenListe: TStringList;
   FStringList: TStringList;
   FCopyList: TStringList;
   FEinzelListe: TStringList;
   procedure ClearToErsteZeile;
   procedure ClearGarbage;
   procedure FillFEinzelListe;
   procedure SplitString(s:string);
   procedure StrToListen;
   function Kosten(nr: string):real;
   function LoadFile(FileName:string): boolean;
   function IsValid(s: string):boolean;

  public
   constructor Create;
   destructor Destroy; override;

  end;


var
  Form1: TForm1;
  StrMg: TStringManager;
  

implementation

{$R *.dfm}

{ TStringManager }

procedure TStringManager.ClearGarbage;
var i: integer;
    s: string;
    anzahl: integer;
begin
  ClearToErsteZeile; // Unwichtiges davor wird gelöscht

 

 for i:= FStringList.Count-1 downto 0 do
 begin

  if (pos('*',FStringList.Strings[i])=0) then

  FStringList.Delete(i);


 end;

     .
     .
     .

end;


constructor TStringManager.Create;
begin
  FNummernListe:= TStringList.Create;
   FEinzelListe:= TStringList.Create;
   FDatumsListe:= TStringList.Create;
   FOrteListe:= TStringList.Create;
   FLaengenListe:= TStringList.Create;
   FKostenListe:= TStringList.Create;
   FCopyList:= TStringList.Create;
   FStringList:= TStringList.Create;
end;

destructor TStringManager.Destroy;
begin
   FreeAndNil(FNummernListe);
   FreeAndNil(FEinzelListe); [b]// <= HIER KOMMT EINE AV
   FreeAndNil(FDatumsListe);
   FreeAndNil(FOrteListe);
   FreeAndNil(FLaengenListe);
   FreeAndNil(FKostenListe);
   FreeAndNil(FCopyList);
   FreeAndNil(FStringList); [b]// UND HIER ( auskommentiert läuft es)
  inherited;
end;

procedure TStringManager.FillFEinzelListe;
var i, k: Integer;
begin

   FEinzelListe:= FNummernListe;
    For i := FEinzelListe.Count - 2 downto 0 do
      For k := FEinzelListe.Count - 1 downto i + 1 do
        If FEinzelListe.Strings[i] = FEinzelListe.Strings[k] Then
          FEinzelListe.Delete(k);


end;



function TStringManager.IsValid(s: string): boolean;
begin
 result:= false;
 if s[3]='.then result:= true;
end;




procedure TForm1.FormCreate(Sender: TObject);
begin
 StrMg:= TStringManager.Create;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  StrMg.Destroy;
end;

procedure TForm1.Button1Click(Sender: TObject);
var h,i: integer;
begin

 for h:= 1 to 9 do
 begin
  if StrMg.LoadFile('telekom_'+IntToStr(h)+'.txt') then
   begin
    StrMg.ClearGarbage;
    for i:= 0 to StrMg.FStringList.Count-1 do
     begin
      StrMg.FCopyList.Add(StrMg.FStringList.Strings[i]);
     end;
    StrMg.FStringList.Clear;
   end;
  end;

    StrMg.FStringList:= StrMg.FCopyList;
    StrMg.StrToListen;
    StrMg.FillFEinzelListe;
    LBNummern.Items:= StrMg.FEinzelListe;
end;

end.
Wuaegner
Gruß Flo
Unternehmensberatung
  Mit Zitat antworten Zitat