AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

text-string aus 2. klasse aufrufen

Ein Thema von danku · begonnen am 14. Apr 2007 · letzter Beitrag vom 16. Apr 2007
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: text-string aus 2. klassen aufrufen

  Alt 14. Apr 2007, 12:33
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: text-string aus 2. klassen aufrufen

  Alt 14. Apr 2007, 12:36
Das ist eigentlich der Setter
Delphi-Quellcode:
procedure TLoadSave.setMemo(tsbboxsender:TMemo);
begin
    fmlog:=tsbboxsender;
end;

function TLoadSave.getMemo:TMemo;
begin
    result := fmlog;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: text-string aus 2. klassen aufrufen

  Alt 14. Apr 2007, 12:53
danke dir erst mal. und wie vereinbare ich das dann in meiner log-methode?
Delphi-Quellcode:
//////////////////ÄNDERUNGSLOG////////////////
procedure TLoadSave.log(tsbboxsender:TMemo; erlaeuterung:string);
begin
tsbboxsender.lines.add(datetostr(now)+' :');
end;
wo code ich dann, dass fmlog gleich dem tmemo aus der mainclass ist?
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#14

Re: text-string aus 2. klasse aufrufen

  Alt 14. Apr 2007, 14:06
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 ;
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: text-string aus 2. klasse aufrufen

  Alt 15. Apr 2007, 11:50
ich hab das anders gelöst.
ohne konstruktor, weil doch der standardkonstruktor von delphi zur geltung kommt, sobald man keinen angibt.

Delphi-Quellcode:
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);
so geht das auch.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#16

Re: text-string aus 2. klasse aufrufen

  Alt 15. Apr 2007, 11:58
Zitat von danku:
ich hab das anders gelöst.
ohne konstruktor, weil doch der standardkonstruktor von delphi zur geltung kommt, sobald man keinen angibt.
Ich hab das Schlüsselwort reintroduce hinter dem Konstruktor stehen. Damit bist du gezwungen, diesen zu verwenden mit einem Parameter. Du kannst somit kein Objekt mehr erstellen mit dem Standardkonstruktor.

Zitat von danku:
Delphi-Quellcode:
   unitlog.setmemo(sendermemo);
   unitlog.setdiag(opendiag);
   unitlog.log(unitlog.getMemo,unitlog.getdiag,1, clblack);
so geht das auch.
Das beisst sich immer noch in meinen Augen. mir ist klar, dass man unterschiedliche Techniken haben kann, um seine Welt in Klassen zu modelieren. Aber was mich hier stört ist, dass du als erstes das Memo mit SetMemo setzt. UnitLog kennt damit also das Logmemo. Bei SetDiag genau das gleiche. Das kann man so machen, von mir aus, und muss ja nicht über den Konstruktor übergeben werden. Aber warum schreibst du dann eine Log-Methode die dann 2 Parameter benötigt, die deinem Objekt ja eh schon bekannt sind. Entweder du sparst dir die ersten beiden Aufrufe, oder du kürzt bei der Log-Methode die ersten 2 Parameter weg.
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: text-string aus 2. klasse aufrufen

  Alt 15. Apr 2007, 12:16
ohne
unitlog.setmemo(sendermemo);
unitlog.setdiag(opendiag);

geht das aber nicht weil dann eine zugriffsverletzung kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#18

Re: text-string aus 2. klasse aufrufen

  Alt 15. Apr 2007, 12:29
Dann zeig doch mal deine Log Methode komplett. Du hast irgendwo den Wurm drin.
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: text-string aus 2. klasse aufrufen

  Alt 15. Apr 2007, 12:49
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;
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#20

Re: text-string aus 2. klasse aufrufen

  Alt 15. Apr 2007, 13:03
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz