Autor Beitrag
daywalker0086
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243


Delphi 2005 Architect
BeitragVerfasst: Mi 16.04.14 14:29 
Hallo Leute ein kleines Problem bei dem ich nicht weiter komme:
Ich habe eine VLC Komponente(TDosCommand)auf meinem Formular was ich so anspreche und das mir eine Memobox füllt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TForm1.Button4Click(Sender: TObject);
var
t:string;
begin
DosCommand2.CommandLine:= 'cmd.exe ';
DosCommand2.WorkingDirectory:='C:\';

DosCommand2.OutputLines:= Memo1.Lines;
//DosCommand1.OnNewLine:= Memo1.Lines;
//DosCommand1.MaxTimeAfterBeginning:= 20;
 DosCommand2.Execute;
 DosCommand2.SendLine('cd winavr/bin',TRUE);
 DosCommand2.SendLine('avrdude.exe -e -P usb -c avrispmkII -p m88p -e -U lfuse:w:0xd2:m -U hfuse:w:0xdc:m -U efuse:w:0x1:m -U flash:w:"Oelkuehler.hex":a',TRUE);
end;

procedure TForm1.DosCommand2NewLine(Sender: TObject; NewLine: string;
  OutputType: TOutputType);
begin
cmd_receivedtext:= NewLine;
if cmd_receivedtext <> NewLine then
Memo1.Lines.Add(NewLine);
//DosCommand1.SendLine(#32,TRUE);
end;



Soweit so gut, da sich die Parameter aber ändern und sich dann die zurückgelieferten Infos ändern wollte ich in einer anderen Unit ein neues Objekt zur Laufzeit erzeugen.

Und da fangen die Probleme an hier mal der Code für die Erzeugung:

Wer ist Owner des Objekts und wie muss di eBehandlungsprocedure geschrieben werden, die in der ersten Implementierung TForm1.DosCommand2NewLine heißt?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure programmieren();


implementation

uses
rpp_unit;
 var
 Doscommand: TDoscommand;
procedure programmieren();
var
outp: string;
begin
Doscommand:= TDoscommand.Create( Wass muss hier rein?);
DosCommand.CommandLine:= 'cmd.exe ';
DosCommand.WorkingDirectory:='C:\';

DosCommand.OutputLines:= Form1.Memo1.Lines;
//DosCommand.OnNewLine:= vMemo.Lines;
//DosCommand1.MaxTimeAfterBeginning:= 20;
 DosCommand.Execute;
 DosCommand.SendLine('cd winavr/bin',TRUE);
 DosCommand.SendLine('avrdude.exe -e -P usb -c avrispmkII -p m88p -e -U lfuse:w:0xd2:m -U hfuse:w:0xdc:m -U efuse:w:0x1:m -U flash:w:"Oelkuehler.hex":a',TRUE);

 //DosCommand.OnNewLine(DosCommand,outp );

end;


Die Komponente muss ja nach Aufruf der Procedur Programmieren noch erreichbar sein um die Rückgabewerte auswerten zu können.

Für Hinweise färe ich dankbar, habe bis jetzt nur mit den grafischen Komponenten gearbeitet.
daywalker0086 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243


Delphi 2005 Architect
BeitragVerfasst: Mi 16.04.14 14:39 
Kleiner Nachtrag:
Wenn ich im Create Ereignis als Owner Nil angebe funktioniert die Procedur erstmal, soweit so gut. (Ist das richtig?)

Jetzt muss ich nur noch irgendwie eine Procedur hinbekommen die den Rückgabewert verarbeitet wie bei
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.DosCommand2NewLine(Sender: TObject; NewLine: string;
  OutputType: TOutputType);
begin
cmd_receivedtext:= NewLine;
if cmd_receivedtext <> NewLine then
Memo1.Lines.Add(NewLine);
//DosCommand1.SendLine(#32,TRUE);
end;


in meinem Hauptformular. KAnn mir da noch jemand helfen?
So funktionierts leider nicht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure test(Sender: TObject);
begin
if Sender is TDoscommand then
begin

showmessage('hat geklappt');
end;
//DosCommand1.SendLine(#32,TRUE);
end;
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Mi 16.04.14 15:30 
Mit einer regulären Prozedur wirst Du nicht weit kommen, es muss schon eine Methode sein, d.h. zu einer Klasse gehören. Außerdem muss die Signatur der Methode kompatibel zum Eventhandler sein, also die gleichen Parameter in der gleichen Reihenfolge aufweisen.