AGB  ·  Datenschutz  ·  Impressum  







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

Befehlsübermittlung über Internet

Ein Thema von x3no · begonnen am 8. Mai 2008 · letzter Beitrag vom 8. Mai 2008
Antwort Antwort
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#1

Re: Befehlsübermittlung über Internet

  Alt 8. Mai 2008, 18:50
Ich glaube, du hast da irgendwas verwechselt. Du meinst sicher TButton(FINDCOMPONENT('Button1'));
Wie auch immer, ich habe heir mal eine kleine ungetestete Lösung vorbereitet: Die Basisklasse TNachricht verwaltet hier eine interne Liste mit Unterklassen. Dabei benutze ich TClassList aus der unit contnrs. Jede abgeleitete Klasse kann sich dort registrieren (Musst du manuell aufrufen (siehe initialization-abschnitt). Ich hätte schwören können, ich wollte da noch irgendwas automatisieren...). Per TNachricht.getSubClass(klassenname) wird die passende klasse aus der liste gesucht und zurückgegeben.
Delphi-Quellcode:
unit Unit1;

interface

uses
  classes, types, contnrs;

type
  TNachrichtClass = class of TNachricht;
  TNachricht = class
  strict protected
    class var fSubClasses: TClassList;
    class procedure Register_Class; virtual;
  public
    class function getSubClass(const ClassName: string): TNachrichtClass;
    procedure Execute(Strings : TStringList); virtual; abstract;
  end;

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

//...

implementation

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);
  with TNachricht.getSubClass[strings[0]].create do
  begin
    Execute(Strings);
  end;
end;

{ TNachricht }

class procedure TNachricht.Register_Class;
begin
  // nix
end;

class function TNachricht.getSubClass(const ClassName: string): TNachrichtClass;
begin
  result := TNachrichtClass(fSubClasses[classname]);
end;

{ TKarteHinzufügen }

class procedure TKarteHinzufügen.register_Class;
begin
  fSubClasses.Add(Self);
end;

initialization

TNachricht.SubClasses := TClassList.Create;
Tkartehinzufügen.Register_Class;

end.
Logischerweise ungetestet, da delphi die ganzen bezeichner nicht kennt und ich zu faul bin, ein demoprojekt zu erstellen.

Btw: Herlich Willkommen in der DP
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:58 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