![]() |
Re: text-string aus 2. klassen aufrufen
daran arbeite ich noch.
procedure TLoadSave.getmemo(tsbboxsender:TMemo); begin fmlog:=tsbboxsender; end; weiß aber net ob das so richtig ist, und wie vor allem die set-methode arbeitet. könntest du mal bitte einen lösungsansatz machen? |
Re: text-string aus 2. klassen aufrufen
Das ist eigentlich der Setter
Delphi-Quellcode:
procedure TLoadSave.setMemo(tsbboxsender:TMemo);
begin fmlog:=tsbboxsender; end; function TLoadSave.getMemo:TMemo; begin result := fmlog; end; |
Re: text-string aus 2. klassen aufrufen
danke dir erst mal. und wie vereinbare ich das dann in meiner log-methode?
Delphi-Quellcode:
wo code ich dann, dass fmlog gleich dem tmemo aus der mainclass ist?
//////////////////ÄNDERUNGSLOG////////////////
procedure TLoadSave.log(tsbboxsender:TMemo; erlaeuterung:string); begin tsbboxsender.lines.add(datetostr(now)+' :'); end; |
Re: text-string aus 2. klasse aufrufen
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:
Der Aufruf erfolgt dann so:
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.
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 ; |
Re: text-string aus 2. klasse aufrufen
ich hab das anders gelöst.
ohne konstruktor, weil doch der standardkonstruktor von delphi zur geltung kommt, sobald man keinen angibt.
Delphi-Quellcode:
so geht das auch.
procedure TLoad.openfromfilediag(sender: TStringgrid;
opendiag: TOpendialog; edaltsender:TEdit; sendermemo: TMemo); var i,j:byte; begin if opendiag.Execute then begin ... //Log-Daten setzen unitlog.setmemo(sendermemo); unitlog.setdiag(opendiag); unitlog.log(unitlog.getMemo,unitlog.getdiag,1, clblack); |
Re: text-string aus 2. klasse aufrufen
Zitat:
Zitat:
|
Re: text-string aus 2. klasse aufrufen
ohne
unitlog.setmemo(sendermemo); unitlog.setdiag(opendiag); geht das aber nicht weil dann eine zugriffsverletzung kommt. |
Re: text-string aus 2. klasse aufrufen
Dann zeig doch mal deine Log Methode komplett. Du hast irgendwo den Wurm drin.
|
Re: text-string aus 2. klasse aufrufen
Delphi-Quellcode:
function TLog.log(tsbboxsender:TMemo; opendiag: TOpendialog; erlaeuterung:byte; farbe: TColor):string;
function shortcutarray(erlaeut:LongInt):string; var count:integer; begin //opendialog1 setdiag(fmdiag); count:= opendiag.Files.Count; case erlaeut of 1:Result:= inttostr(count)+' Datei(en) geladen'; 2:Result:= 'test22'; end; end; var log_dat:string; count,i:integer; //erlauterung:byte; begin {case erlaeuterung of 1:Result:= inttostr(count)+' Datei(en) geladen'; 2:Result:= 'test'; end; } tsbboxsender.Font.Color:= farbe; tsbboxsender.lines.add('['+TimeToStr(now)+'] : '+ shortcutarray((erlaeuterung))); for i:=0 to opendiag.files.count -1 do begin tsbboxsender.lines.add(' -> '+ Extractfilename(opendiag.files.Strings[i])); end; end; |
Re: text-string aus 2. klasse aufrufen
In welcher Zeile kommt den die Zurgiffsverletzung. Und was soll das hier in der ShortCutArray Funktion:
Delphi-Quellcode:
//opendialog1
setdiag(fmdiag); count:= opendiag.Files.Count; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz