Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi NonVCL datei (https://www.delphipraxis.net/148273-nonvcl-datei.html)

sirius 26. Feb 2010 14:16

Re: NonVCL datei
 
Zitat:

Zitat von Assertor
Zitat:

Zitat von Luckie
Achtung. Die Indys brauchen das Application-Objekt.

:shock: Nur für das häßliche TIdAntiFreeze (a.k.a. Delphi-Newbie-Warum-Freezt-mein-Form-bei-Blocking-Sockets & Aber-Ich-Versteht-Threads-Nicht). Wenn man das nicht nutzt, läuft Indy natürlich komplett ohne Application Objekt.

Gruß,
Assertor

Die Serverkomponente (bspw. TCPServer in v9) benutzen doch einen Thread und der wiederum benutzt synchronize und das geht nur mit Application-Objekt. Das liegt mir zumindest so im Gedächtnis.

DeddyH 26. Feb 2010 14:38

Re: NonVCL datei
 
Zitat:

Zitat von sirius
@Deddy, du willst doch ne Message bekommen ;) da kann man doch nicht 0 übergeben.

Ich hatte das beim ersten Lesen für ne Komponente gehalten :lol:

mjustin 26. Feb 2010 14:43

Re: NonVCL datei
 
Zitat:

Zitat von sirius
Zitat:

Zitat von Assertor
Zitat:

Zitat von Luckie
Achtung. Die Indys brauchen das Application-Objekt.

:shock: Nur für das häßliche TIdAntiFreeze (a.k.a. Delphi-Newbie-Warum-Freezt-mein-Form-bei-Blocking-Sockets & Aber-Ich-Versteht-Threads-Nicht). Wenn man das nicht nutzt, läuft Indy natürlich komplett ohne Application Objekt.

Gruß,
Assertor

Die Serverkomponente (bspw. TCPServer in v9) benutzen doch einen Thread und der wiederum benutzt synchronize und das geht nur mit Application-Objekt. Das liegt mir zumindest so im Gedächtnis.

Synchronize synchronisiert mit dem Hauptthread. Das muss aber nicht der GUI-Thread sein. TThread.Synchronize greift daher nicht auf TApplication zu, das ja wäre auch irgendwie ein schräges Design.

Viele Grüße

sirius 26. Feb 2010 14:58

Re: NonVCL datei
 
Ach na eben. hmmm :wall: Wäre mir das mal eher aufgefallen. Ich hatte da sicher mal vor Jahren nachgesehen und mir dies so gemerkt, weil ja standardmäßig, das Applicaton-Objekt in WakeMainThread reinhängt. Aber das kann man ja problemlos ändern.

Ohje: Ich weis gar nicht wie viele Aussagen über TThread ich hier in dem Forum revidieren müsste :oops:

shmia 26. Feb 2010 16:16

Re: NonVCL datei
 
Ich habe hier jetzt zwei Extreme gesehen - Indy, die eierlegende Wollmilchsau und WinSocket-API, die low-Level Schnittstelle.
Beides ist für ein Konsolenprogramm eher ungeeignet, da entweder zu fett oder zu kompliziert und nicht objektorientiert.
Aber es gibt auch noch etwas dazwischen, nämlich die Unit ScktComp.
Damit kann man sowohl TCP-Server als auch Clients schreiben.
Aber halt nur TCP/IPv4 (IPv6 oder UDP sind nicht vorgesehen).

Für einen TCP-Client als Konsolenprogramm ist die Unit ScktComp die ideale Lösung.
Man muss mit ungefähr 13 KByte zusätzlichen Code rechnen.

mjustin 26. Feb 2010 16:52

Re: NonVCL datei
 
Zitat:

Zitat von shmia
Ich habe hier jetzt zwei Extreme gesehen - Indy, die eierlegende Wollmilchsau und WinSocket-API, die low-Level Schnittstelle.

Im Mittelfeld spielt da noch Ararat Synapse eine Rolle: sehr übersichtlich, kompakt, schlank, und leistungsmäßig in allen Tests (TCP Client seitig) mit Indy auf einer Höhe. Und auch kostenlos / Open Source. ScktComp ist schon lange deprecated, wie schon gesagt wird daran nichts mehr getan.

Luckie 26. Feb 2010 18:09

Re: NonVCL datei
 
Zitat:

Zitat von sirius
Die Serverkomponente (bspw. TCPServer in v9) benutzen doch einen Thread und der wiederum benutzt synchronize und das geht nur mit Application-Objekt. Das liegt mir zumindest so im Gedächtnis.

Genau das hatte ich auch im Kopf.

sirius 26. Feb 2010 19:57

Re: NonVCL datei
 
Zitat:

Zitat von shmia
Für einen TCP-Client als Konsolenprogramm ist die Unit ScktComp die ideale Lösung.
Man muss mit ungefähr 13 KByte zusätzlichen Code rechnen.

Das ist Ansichtssache. Grade bei einem Konsolenprogramm sind die recht einfach zu handhabenden WinApi-Befehle sehr passend.

jokerfacehro 1. Mär 2010 09:33

Re: NonVCL datei
 
also mit ScktComp hab ich schon mal nen Chat programm geschrieben.
und jetz ma wirklich rudimentär mit den sockets zu arbeiten ist cool :)

Für AsyncSelect brauch ich jetz aber kein Fenster, wenn ich dem Thread richtig gefolgt bin? ^^

sirius 1. Mär 2010 09:48

Re: NonVCL datei
 
Für Asyncselect brauchst du ein Fenster. Die Frage ist nur, ob du asyncSelect brauchst.

Du kannst auch mit EventSelect ein Ereignis setzen lassen, wenn etwas an deinem Socket passiert. Oder du fragst regelmäßig mit Select dein Socket ab, ob etwas passiert ist. Oder du rufst einfach recv auf, welches dein Programm blockiert. Oder du setzt dein Socket auf nichtblockierend und rufst recv auf, wenn am Socket nix passiert ist, gibts einen Fehler zurück (WSAEWouldBlock).
Du kannst auch die komplette Socketarbeit in einen Thread auslagern und dort blockierend arbeiten.

Du siehst: Möglichkeiten über Möglichkeiten... ;)
Asyncselect ist nur eine, aber eine (und die einzige) die definitiv ein Fenster brauchst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 Uhr.
Seite 3 von 4     123 4      

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