String als Parameter in einer DLL, will nicht,....LPCSTR.???
- HeX0R
- Beiträge: 3042
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: String als Parameter in einer DLL, will nicht,....LPCSTR
Interessanterweise verbindet sich auch die vorkompilierte TRIXI.exe im Demo\Delphi-Ordner nicht mit einem gestarteten Netzwerkserver.
Die Unicode-Variante allerdings schon.
Die Unicode-Variante allerdings schon.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
Re: String als Parameter in einer DLL, will nicht,....LPCSTR
Bei mir verbinden sich fast alle Programme mit dem Server, nur die Prismaversion nicht.
Ich hab es jetzt mit C,C++ und PB probiert, da passiert nix...
Ich hab es jetzt mit C,C++ und PB probiert, da passiert nix...
Re: String als Parameter in einer DLL, will nicht,....LPCSTR
Hallo Helmut,
habe mir alle Mühe gemacht, aber die Verbindung zum Webserver klappt zwar, aber ein String wird aber auch mit den Demoprogrammen nicht ausgegeben. Habe mir sogar den Lazarus runtergeladen, auch kein Treffer.
Lade dir mal diesen Webserver herunter
http://www.purebasic-lounge.com/viewtop ... nwebserver
und berichte über deine Ergebnisse.
Vorteil: Der Webserver läßt sich im laufenden Betrieb starten und stoppen und sogar der Port eingeben.
Für diese Zwecke genau richtig, finde ich.
Probiere auch die Demos aus.
Den Erfolg wie @edel hatte ich nicht.
Bin über dein Bericht gespannt.
habe mir alle Mühe gemacht, aber die Verbindung zum Webserver klappt zwar, aber ein String wird aber auch mit den Demoprogrammen nicht ausgegeben. Habe mir sogar den Lazarus runtergeladen, auch kein Treffer.
Lade dir mal diesen Webserver herunter
http://www.purebasic-lounge.com/viewtop ... nwebserver
und berichte über deine Ergebnisse.
Vorteil: Der Webserver läßt sich im laufenden Betrieb starten und stoppen und sogar der Port eingeben.
Für diese Zwecke genau richtig, finde ich.
Probiere auch die Demos aus.
Den Erfolg wie @edel hatte ich nicht.
Bin über dein Bericht gespannt.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Re: String als Parameter in einer DLL, will nicht,....LPCSTR
Vielen Dank für eure Testerei !!!
@Dysti
Es soll kein Ckient oder Server mit Purebasic-Befehlen aufgebaut werden, sondern ich möchte mit Hilfe einer DLL und Purebasic auf ein Server zugreifen.
Der Befehl der DLL um sich mit dem Server zu verbinden verlangt einen String mit der ADR des Servers.
Syntax: function Connect(Server: PAnsiChar; Port: Integer): Boolean;
Und da liegt das Problem: Dieser PAnsiChar ........ wird nicht als ADR von der DLL (über Purebasic) genommen.
Ob da nun 127.0.0.1 oder localhost steht, über Purebasic und der DLL geht es nicht........
Da nun nicht jeder dieses Serverprogramm hat, habe ich das PB-Hilfe-Server-Beispiel mit Port 3773 angehängt.
Damit könnte, wer mir helfen mag, den Zugriff auf den Server über diese DLL versuchen.
zB. mit diesem Codebeispiel:
Gibt es irgendwelche Textformatierungen die man machen kann?
AnsiChar, Pchar oder wie auch immer das heißen kann?
Die Demoprogramme, aus Trixi, habe ich mit folgendem Ergebniss ausprobiert:
VB geht nicht Fehlermeldung
Net Prism geht
Delphi geht
Delphi Unicode geht
Vielen Dank für eure Versuche, Gruß Helmut
@Dysti
Es soll kein Ckient oder Server mit Purebasic-Befehlen aufgebaut werden, sondern ich möchte mit Hilfe einer DLL und Purebasic auf ein Server zugreifen.
Der Befehl der DLL um sich mit dem Server zu verbinden verlangt einen String mit der ADR des Servers.
Syntax: function Connect(Server: PAnsiChar; Port: Integer): Boolean;
Und da liegt das Problem: Dieser PAnsiChar ........ wird nicht als ADR von der DLL (über Purebasic) genommen.
Ob da nun 127.0.0.1 oder localhost steht, über Purebasic und der DLL geht es nicht........
Da nun nicht jeder dieses Serverprogramm hat, habe ich das PB-Hilfe-Server-Beispiel mit Port 3773 angehängt.
Damit könnte, wer mir helfen mag, den Zugriff auf den Server über diese DLL versuchen.
zB. mit diesem Codebeispiel:
Code: Alles auswählen
;Ort der LIB, "C:\Trixi\Trixi.dll")
;library öffnen
DLL_NAME.s="C:\Trixi\Trixi.dll"
iLib=OpenLibrary(#PB_Any,DLL_NAME)
Debug iLIB
;function Connect(Server: PAnsiChar; Port: Integer): Boolean;
Text$ = "127.0.0.1"
*Text = @Text$ ; *Text speichert die Adresse des Strings im Speicher
*Pointer.String = @*Text ; *Pointer verweist auf *Text
Debug *Pointer\s ; Darstellen des Strings, welcher sich an der in *Pointer gespeicherten Adresse befindet
PortNr.i=3774
Debug *Pointer\s
;RetVal_connect.l=CallFunction(iLIB,"Connect",*Pointer\s,PortNr)
Debug *Pointer\s
Debug RetVal_connect
AnsiChar, Pchar oder wie auch immer das heißen kann?
Die Demoprogramme, aus Trixi, habe ich mit folgendem Ergebniss ausprobiert:
VB geht nicht Fehlermeldung
Net Prism geht
Delphi geht
Delphi Unicode geht
Vielen Dank für eure Versuche, Gruß Helmut
Re: String als Parameter in einer DLL, will nicht,....LPCSTR
Ein Text Parameter kann als ByVal übergeben werden, wobei dieser immer als Pointer auf den Text übergeben wird. Wenn der Text-Parameter als ByRef übergeben wird, muss der pointer von den Text-Pointer übergeben werden.
Sieht so aus das Adr als ByRef übergeben werden muss
Schau mal ob es so geht.
FF
Sieht so aus das Adr als ByRef übergeben werden muss
Code: Alles auswählen
;Ort der LIB, "C:\Trixi\Trixi.dll")
;library öffnen
DLL_NAME.s="C:\Trixi\Trixi.dll"
iLib=OpenLibrary(#PB_Any,DLL_NAME)
Debug iLIB
;function Connect(Server: PAnsiChar; Port: Integer): Boolean;
Text$ = "127.0.0.1"
*Text = @Text$ ; *Text speichert die Adresse des Strings im Speicher
PortNr.i=3774
Debug *Pointer\s
;RetVal_connect.l=CallFunction(iLIB,"Connect",@*Text,PortNr)
Debug *Pointer\s
Debug RetVal_connect
FF

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: String als Parameter in einer DLL, will nicht,....LPCSTR
Hallo,
Compilerfehlermeldung für Zeile 10:
Die folgende Variable hat eine 'Structur':*Pointer
Debug *Pointer\s
Gruß Helmut
Compilerfehlermeldung für Zeile 10:
Die folgende Variable hat eine 'Structur':*Pointer
Debug *Pointer\s
Gruß Helmut
Re: String als Parameter in einer DLL, will nicht,....LPCSTR
Also... die Zeile 10 wirst du doch wohl selber raus schmeissen können!!!
Kleiner link zu PAnsiChar
http://www.fh-jena.de/contrib/fb/gw/gmu ... _pchr.html
...
Also nach der Beschreibung muss nur "*Text" übergeben werden...
P.S. Prüft mal mit "GetFunction()" ob die Funktion überhaupt gibt. Manchmal sind die Funktionsnamen nicht so wie man denkt...
Kleiner link zu PAnsiChar
http://www.fh-jena.de/contrib/fb/gw/gmu ... _pchr.html
...
Also nach der Beschreibung muss nur "*Text" übergeben werden...
P.S. Prüft mal mit "GetFunction()" ob die Funktion überhaupt gibt. Manchmal sind die Funktionsnamen nicht so wie man denkt...
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: String als Parameter in einer DLL, will nicht,....LPCSTR
Meine PortNr ist 3773:
DEBUGAUSGABE:
21040296
0
48890672
Schade, geht auch nicht...
Code: Alles auswählen
;Ort der LIB, "C:\Trixi\Trixi.dll")
;library öffnen
DLL_NAME.s="C:\Trixi\Trixi.dll"
iLib=OpenLibrary(#PB_Any,DLL_NAME)
Debug iLIB
;function Connect(Server: PAnsiChar; Port: Integer): Boolean;
Text$ = "127.0.0.1"
*Text = @Text$ ; *Text speichert die Adresse des Strings im Speicher
PortNr.i=3773
;Debug *Pointer\s
RetVal_connect.l=CallFunction(iLIB,"Connect",@*Text,PortNr)
;Debug *Pointer\s
Debug RetVal_connect
;Ergebnis.l = GetFunction(#Library, FunktionsName$)
FunktionDa=GetFunction(iLIB,"Connect")
If FunktionDa
Debug FunktionDa
Else
Debug "Rückgabe=0"
EndIf
21040296
0
48890672
Schade, geht auch nicht...
Re: String als Parameter in einer DLL, will nicht,....LPCSTR
In
würde ich mir Gedanken über das "@" machen. *Text ist doch schon der Pointer (Adresse) auf den String; @*Text zeigt auf die Adresse der Adresse.
Gruß
Helle
Code: Alles auswählen
RetVal_connect.l=CallFunction(iLIB,"Connect",@*Text,PortNr)
Gruß
Helle
Re: String als Parameter in einer DLL, will nicht,....LPCSTR
Ja,
hab' das auch schon nur mit der Adresse gemacht. Ich hab' da schon so viel probiert: Zeiger auf Adresse mit Inhalt usw...
Wie schon geschrieben, mit einem Purebasic-Client-Code geht die Textvariable auch.....
Nur die DLL will es nicht, kann die Aussage: Null.terminierten String was damit zu tun haben, wie ist das gemeint?
Gruß Helmut
hab' das auch schon nur mit der Adresse gemacht. Ich hab' da schon so viel probiert: Zeiger auf Adresse mit Inhalt usw...
Wie schon geschrieben, mit einem Purebasic-Client-Code geht die Textvariable auch.....
Nur die DLL will es nicht, kann die Aussage: Null.terminierten String was damit zu tun haben, wie ist das gemeint?
Gruß Helmut