Einzelnen Beitrag anzeigen

x3no

Registriert seit: 24. Mär 2008
6 Beiträge
 
#1

Befehlsübermittlung über Internet

  Alt 8. Mai 2008, 18:29
Hi, alle zusammen!

Erst einmal vorweg ein digges Lob an DP ! Die Seite hat mir schon zu vielen Problemen
eine gute Lösung geboten.

Doch nun hab ich ein Problem, mit dem ich nicht weiter komme:

Delphi-Quellcode:
type
  TNachricht = class
  public
    procedure Execute(Strings : TStringList); virtual; abstract;
  end;

type
  TKarteHinzufügen = class(TNachricht)
  public
    procedure Execute(Strings : TStringList); override;
  end;

//...

var
  AddKarte : TNachricht;

//...
procedure TKarteHinzufügen.Execute(Strings : TStringList);
var InfoFile : TextFile;
    Info : string;
begin
//...
end;

procedure TFMain.FormCreate(Sender: TObject);
begin
  AddKarte := TKarteHinzufügen.Create;
  //...
end;

//...
// Client sendet string (Inhalt: AddKarte,...)
//...

procedure TFMain.ServerExecute(AContext: TIdContext);
var Strings : TStringList;
    //test : TNachricht;
begin
  Strings := TStringList.Create;
  Strings.CommaText := AContext.Connection.IOHandler.Readln;
  //test := TNachricht(Strings[0]);
  //test.Execute(strings);
  TNachricht(Strings[0]).Execute(Strings); // Hier kommt eine Zugriffsverletzung
                                           // vermutlich durch den cast
end;
Also: Was es später werden soll ist eine Befehlsübermittlung per IndyClient.

Vorher hatte ich den string mit einer case Struktur abgetastet, aber es sollte
vll noch bessere Möglichkeiten geben, und das soll ein Ansatz darstellen.

Falls jmd das Problem mit der Zugriffsverletzung lösen kann, oder mit sagen kann,
wie ich so eine Befehlsübermittlung programmieren kann wäre ich sehr dankbar.

Meine Vermutung ist noch, dass der Fehler am Cast liegt, jedoch weiß ich nicht warum.
  Mit Zitat antworten Zitat