![]() |
NonVCL datei
hallo,
ich möchte ein NonVCL programm schreiben. (mit Delphi 7 enterprise) das programm soll ohne oberfläche arbeiten. und über einen TCPClient verfügen. die TCP Kompo wäre mir egal, ob Indy oder standard WIndows Kompo ich habe allerdings keine ahnung wie ich da ran gehen soll. |
Re: NonVCL datei
Zitat:
|
Re: NonVCL datei
Du müsstest die benötigten Objekte halt zur Laufzeit dynamisch anlegen. Owner kann hier dann natürlich nur nil sein, da Du ja kein TComponent-Objekt hast, welches diese Rolle übernehmen könnte. IIRC gibt es von Luckie hier irgendwo einen entsprechenden Codeschnippsel, aber da ich jetzt Feierabend habe fehlt mir die Zeit zur Suche :zwinker:
|
Re: NonVCL datei
ok, das wäre jetzt kein problem.
allerdings weiß ich nicht, wie ich da sprogramm jetzt aufzubauen habe. gibt es da wie bei c++ ne main prozedur oder wie sieht das aus ? Edit: das dynamische erstellen der kompos ist auch kein problem ^^ ich weiß bloß nicht wie die struktur für das hauptprogramm aussieht, da es ja bei delphi keine vorlage dafür gibt |
Re: NonVCL datei
Indy = "unsichtbare" Kommunicationskomponente
VCL (Visual Component Library) = (oftmals) sichtbare Ein/Ausgabekomponente für ein UI (User Interface) Also es kommt darauf an, was du durch "NonVCL" erreichen willst, aber von der Definition her ist die Verwendung der Indy in einem NonVCL-Programm kein Wiederspruch. |
Re: NonVCL datei
Ein Tutorial für die Sockets:
![]() Edit: Zitat:
Und jetzt beginnst du mit deinem Code, so in der Art (wenn du Sachen mit Messages verwendest):
Delphi-Quellcode:
begin
init; while getmessage(msg,0,0,0) do dispatchmessage(msg); end. |
Re: NonVCL datei
@ sirius
so habe ich es jetz auch gemacht, dass AppType wegkommentiert ^^ |
Re: NonVCL datei
ich nehme jetzt direkt nen Socket.
habe gerade die Indy Bibliotheken hinzugefügt und nachm compilieren, warns schon 300KB :shock: Edit: danke euch für die schnellen antworten :thumb: |
Re: NonVCL datei
Zitat:
Und bisher haben fat alle nonVCL'ler gemeint da nicht mal SysUtils eingebunden werden darf. |
Re: NonVCL datei
noch ne frage
ich hab jetz paar prozeduren die auf einander zugreifen. 1. prozedur 2. prozedur .... wenn die 1. auf die 2. zugreifen will, kennt delphi die prozedur noch garnicht. wie muss ich denn die prozeduren vorher deklarieren. ? |
Re: NonVCL datei
Delphi-Quellcode:
procedure xyz; forward;
prcoedure abc; begin xyz; end; procedure xyz; begin //... end; |
Re: NonVCL datei
Zitat:
|
Re: NonVCL datei
Zitat:
ich hab Delphi 7 Enterprise mit Indy 10 die exe sollte auf jedenfall unter 100KB liegen und ohne SysUtils komme ich auf 20KB |
Re: NonVCL datei
Achtung. Die Indys brauchen das Application-Objekt. Und was du willst ist wohl eher ein unsichtbares Konsolenprogramm. Und gibt es einen Grund, warum die Exe nicht größer als 100KB sein darf?
|
Re: NonVCL datei
ich benutze keine Indys weil die mir zu groß werden.
und der sinn von NonVCL sind üfr mich nun mal kleine programme ^^ deswegn will ich unter 100KB bleiben, was auch gut möglich ist |
Re: NonVCL datei
Zitat:
Gruß, Assertor |
Re: NonVCL datei
danke für die info, hilft bestimmt jemandem ^^
ich hab en anderes problem ich hab hier ein WSAASyncSelect und das braucht en handle ^^ und da ich kein form hab, hab ich auch kein handle
Delphi-Quellcode:
WSAAsyncSelect(FSocket, self.Handle, WM_mySocket, FD_READ or FD_CLOSE or FD_WRITE)
|
Re: NonVCL datei
Ich kenn das Ding nicht, aber wenn Du einfach 0 übergibst?
|
Re: NonVCL datei
Hallo jokerfacehro, GROSSES TIP :warn:
Thread #6 sirius :thumb: , ohne dieses Tutorial durchzuackern, und auch zu verstehen, wirds schwierig mit der Socket API. Desswegen gibts ja Indy und Konsorten. lg. Astat |
Re: NonVCL datei
@Deddy, du willst doch ne Message bekommen ;) da kann man doch nicht 0 übergeben.
@TE Du musst die ein Fenster erstellen. Entweder nonvcl oder mit allocateHwnd aus der Unit Classes. Aber vielleicht kommst du hier auch ohne AsyncSelect aus. Wenn du nur einen simplen Client ohne Userinteraktion hast, kannst du deinen Socket doch blockierend lassen. |
Re: NonVCL datei
Zitat:
|
Re: NonVCL datei
Zitat:
|
Re: NonVCL datei
Zitat:
Viele Grüße |
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: |
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. |
Re: NonVCL datei
Zitat:
|
Re: NonVCL datei
Zitat:
|
Re: NonVCL datei
Zitat:
|
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? ^^ |
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. |
Re: NonVCL datei
Doch brauchst du, nur kein Formular. So wie ich das verstanden habe solltest du dir ein Windowhandle kreieren.
|
Re: NonVCL datei
Zitat:
|
Re: NonVCL datei
Zitat:
|
Re: NonVCL datei
Bitte kommt nicht vom eigentlichen Thema ab. Es ging darum wie man eine non-vcl-Anwendung schreibt.
Inzwischen geht es schon darum wie man die Sockets etc. verwendet. Das ist definitiv ein neues Thema und dafür sollte auch ein neues Thema angelegt werden. :) Ansonsten wird es irgendwann ein riesen Durcheinander weil niemand mehr durchsieht welche Antwort zu welcher Frage gehört. Und auch über die Suche wird dann niemand mit dem gleichen Problem später einmal die Lösung finden. Daher: Neue Frage -> neues Thema erstellen. |
Re: NonVCL datei
Ich glaube, du musst dir erst einmal klar werden, was dein Programm überhaupt alles machen soll und wie es arbeiten soll. Ansonsten bringt das alles nichts.
|
Re: NonVCL datei
ich weiß schon was es machen soll.
ne tcp verbindung aufbauen und einfache befehle abarbeiten die ankommen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:22 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