Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
Delphi 7 Enterprise
|
Re: text-string aus 2. klasse aufrufen
16. Apr 2007, 16:59
Zitat von Jelly:
Ich hab das Gefühl, du hast das Konzept der OO Programmierung nicht ganz verstanden. Sinn ist es, dass Objekte eigenständig arbeiten sollen. In deinem Fall ist die Klasse TLoadSave. Und so wie es aussieht, soll die Texte in einem Memo wegloggen. Es macht dann keinen Sinn, bei jedem Aufruf deiner Log Methode das Memo mitzuübergeben. So Sachen macht man einmal, in deinem Fall würd ich es im Constructor machen. Und um bischen flexibel zu bleiben, würde ich mich nicht auf ein Memo beschränken, sondern würde im Constructor einfach eine TStrings Instanz übergeben.
Delphi-Quellcode:
unit uLoadSave;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls ;
type
TLoadSave = class
private
FStringList: TStrings;
public
constructor Create (AStringList : TStrings) ; reintroduce ;
property StringList : TStrings read FStringList write FStringList ;
procedure Log (What : string) ;
end;
implementation
{ TLoadSave }
constructor TLoadSave.Create(AStringList: TStrings);
begin
inherited Create ;
assert (assigned(AStringList) and (AStringList is TStrings),' Bitte StringList Objekt im Constructor übergeben') ;
FStringList := AStringList ;
end;
procedure TLoadSave.Log(What: string);
begin
FStringList.Add (What) ;
end;
end.
Der Aufruf erfolgt dann so:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
LS := TLoadSave (memo1.lines) ; // LS als Variable in deiner Form deklarieren
end;
procedure TForm1.Button1Click (Sender : TObject) ;
begin
LS.Log ('Halleluja') ;
end ;
nimms mir nicht übel aber mit dem LS kann ich nichts anfangen. dieser dient doch als klassenbezeichner (punkt-notation) um damit die methoden aufzurufen. es gehört trotzdem noch get und set mit in die unit oder? bei procedure TLoad.Log(What: string); kommt eine EAccessViolation Meldung
|
|
Zitat
|