lNet: TLTcpComponent.Get - Parameter ohne Typ? [gelöst]

Rund um die LCL und andere Komponenten
Antworten
RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

lNet: TLTcpComponent.Get - Parameter ohne Typ? [gelöst]

Beitrag von RSE »

TLTcpComponent.Get ist auf http://members.chello.sk/ales/docs/lnet/tltcp.get.html dokumentiert. Der Parameter aData hat allerdings keinen Typ. Wie verwende ich diesen? Das ist das erste Mal, dass mir ein typloser Parameter über den Weg läuft...
Zuletzt geändert von RSE am Fr 18. Dez 2009, 03:23, insgesamt 1-mal geändert.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: lNet: TLTcpComponent.Get - Parameter ohne Typ?

Beitrag von theo »

RSE hat geschrieben:TLTcpComponent.Get ist auf http://members.chello.sk/ales/docs/lnet/tltcp.get.html dokumentiert. Der Parameter aData hat allerdings keinen Typ. Wie verwende ich diesen? Das ist das erste Mal, dass mir ein typloser Parameter über den Weg läuft...
Irgendwie halt ;-)

z.B.

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
const Bufsize=2048;
var Buf:Pchar;
begin
  Buf:=StrAlloc(bufsize); 
  MyLTcp.Get(Buf^,bufsize,nil);
  //tuwas
  StrDispose(Buf);
end;

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: lNet: TLTcpComponent.Get - Parameter ohne Typ?

Beitrag von RSE »

Ach verdammt, die Blindheit... aSize setze ich ja selbst und bekomme es nicht zurück!
Ich rufe also eine bestimmte Menge an Daten (aSize Bytes) vom BS-Puffer ab, bekomme sie über aData und der Funktionsrückgabewert sagt mir, wie voll mein Buffer (aData) geworden ist. Wenn der BS-Puffer danach immernoch Daten enthält (aSize zu klein war), wird der Event erneut ausgelöst. Sehe ich das richtig? Zumindest macht es so jetzt Sinn.

Warum erblindet man eigentlich immer dermaßen, wenn man sich mit Neuem auseinandersetzt?
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: lNet: TLTcpComponent.Get - Parameter ohne Typ?

Beitrag von theo »

RSE hat geschrieben:Zumindest macht es so jetzt Sinn.
Joh, also ich kenne die Funktion und Lnet überhaupt nicht, aber normalerweise ist es einfach so:
Wenn das Resultat von Get < Bufsize ist, dann kommen keine weiteren Daten mehr. So würde ich das mal ausdrücken. ;-)

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: lNet: TLTcpComponent.Get - Parameter ohne Typ?

Beitrag von RSE »

Danke erstmal, ich bin am Testapp proggen. Wenn die komplett ist, dann werd ich sie dem Autor von lNet mal anbieten, vielleicht setzt er sie ja als Beispiel und Demo mit auf seine Seite ;-)
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: lNet: TLTcpComponent.Get - Parameter ohne Typ?

Beitrag von Hitman »

Ein paar deiner Fragen (mit genug Fantasie übrigens sogar alle ;-)) werden hier beantwortet:
http://lnet.wordpress.com/usage/sockets ... d-sending/" onclick="window.open(this.href);return false;

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: lNet: TLTcpComponent.Get - Parameter ohne Typ?

Beitrag von RSE »

Was meinst du mit "ein paar"? Ich hatte eigentlich nur eine, und die wird auf dieser Seite eben nicht beantwortet. Theo hat sie mir aber schon erschöpfend beantwortet und das Testprog läuft einwandfrei.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: lNet: TLTcpComponent.Get - Parameter ohne Typ?

Beitrag von Hitman »

RSE hat geschrieben:Was meinst du mit "ein paar"? Ich hatte eigentlich nur eine, und die wird auf dieser Seite eben nicht beantwortet. Theo hat sie mir aber schon erschöpfend beantwortet und das Testprog läuft einwandfrei.
Der Seite (bzw. generell dem Doku Abschnitt dort) kann man entnehmen, dass Empfangen und Senden jeweils ohne internen Buffer ablaufen. Wie das für Send aussieht, steht mit Beispiel dort - das kann man sich also (--> Fantasie *g*) auch aufs Empfangen spiegeln.
RSE hat geschrieben:[...], wird der Event erneut ausgelöst. Sehe ich das richtig?
Auch steht da, dass keine Events gefeuert werden, sondern du dich selbst ums Abholen der Daten kümmern musst.

Zugegeben, keins von beiden behandelt deine Ausgangsfrage. Die geht aber auch ein bisschen über den Rahmen von lNet hinaus - nämlich in Richtung Sprachfeatures :D Übrigens bin ich mir sicher, dass dir durchaus schon untypisierte Parameter über den Weg gelaufen sind ... schau dir mal TStream.Read/Write an :-)

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: lNet: TLTcpComponent.Get - Parameter ohne Typ? [gelöst]

Beitrag von RSE »

Mein Problem war tatsächlich nur der Umgang mit diesem untypisierten Parameter. Zusätzlich hatte ich übersehen, dass ich die Größe des Buffers ja selbst bestimme und übergebe und nicht bekomme. Als mir dieses Licht aufging, war ja alles klar. Das Empfangen mit GetMessage war von vornherein klar (so hatte ich es zuerst in meinem Prog umgesetzt), da ich das Beispiel gelesen und verstanden habe. Unverständlich war nur der untypisierte Parameter. Dieser war mir neu, da ich bisher tatsächlich noch nie mit Streams gearbeitet habe. Und das, obwohl ich seit nunmehr über 10 Jahren in meiner Freizeit programmiere (und nicht wenig) - ausschließlich TP, Delphi und Lazarus (in chronologischer Reihenfolge ;-) ).

Und bezüglich der Events: Ich habe eine GUI-Anwendung, und da feuern die auch automatisch.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

Antworten