[TRIXI] Implementation PureBasic

Ja… komme der Sache schon näher:

Trixi_Connect.ProtoConnect = GetFunction(iLIB,"Connect")
Trixi_ReadString.ProtoReadString = GetFunction(iLIB,"ReadString") ; Made for Toni ;-)
Trixi_ReadInteger.ProtoReadInteger = GetFunction(iLib, "ReadInteger")

Das muß nach dem Öffnen der Lib stehen (in dem Code), nuh aber Schluß mit der Spielerei, muß @Work,

Danke, Danke Toni, hast mir echt geholfen!!

Gruß Helmut

Das muß nach dem Öffnen der Lib stehe

Klar, wenn du iLib übergeben willst, musst du es vorher erzeugen. Das sehe ich ein. Gibt selbst blind, unwissend, und aus der Ferne nen Sinn. :wink:

Prototype.p-ascii ProtoReadString(Variable.i)

Könnte mir vorstellen, dass das so muss… (wieder ein Schuss ins Blaue ;))

Aber nu konzentrier dich mal auf deine Arbeit :slight_smile:

Gruß,

Toni

Nee, p-ascii geht nicht.
Hier der kommentierte aktuelle Stand:

Float schreiben: wird nur die Ganzzahl geschrieben.
Float lesen: geht wegem dem Punkt anstelle von Komma nicht?
String schreiben funktioniert.
String lesen geht nicht.

Rest funktioniert, siehe Kommentar.

;function Connect(Server: PAnsiChar; Port: Integer): Boolean;
Prototype.l ProtoConnect(Server.p-ascii, Port.i)
Prototype.l ProtoDisconnect()
Prototype.i ProtoRunScript(Variable.i)

Prototype.l ProtoWriteString(Variable.i,Value_Str ) 
Prototype.l ProtoWriteInteger(Variable.i,Value_Int ) 
Prototype.l ProtoWriteFloat(Variable.i, Value_Float ) 
Prototype.l ProtoWriteBoolean(Variable.i,Value_Boolean )

;Prototype.p-ascii ProtoReadString(Variable.i) ; war ein Test


Prototype$ ProtoReadString(Variable.i) 
Prototype.i ProtoReadInteger(Variable.i) 
Prototype.f ProtoReadFloat(Variable.i) 
Prototype.b ProtoReadBoolean(Variable.i)

iLib=OpenLibrary(#PB_Any,"I:\PureBasic450_x86\Helmut\Trixi.dll")

If iLib
Trixi_Connect.ProtoConnect = GetFunction(iLIB,"Connect")
Trixi_Disconnect.ProtoDisconnect = GetFunction(iLIB,"Disconnect")
Trixi_RunScript.ProtoRunScript = GetFunction(iLIB,"RunScript") 
  
Trixi_WriteString.ProtoWriteString = GetFunction(iLIB,"WriteString") 
Trixi_WriteInteger.ProtoWriteInteger = GetFunction(iLib, "WriteInteger")
Trixi_WriteFloat.ProtoWriteFloat = GetFunction(iLib, "WriteFloat")
Trixi_WriteBoolean.ProtoWriteBoolean = GetFunction(iLib, "WriteBoolean")

Trixi_ReadString.ProtoReadString = GetFunction(iLIB,"ReadString") 
Trixi_ReadInteger.ProtoReadInteger = GetFunction(iLib, "ReadInteger")
Trixi_ReadFloat.ProtoReadFloat = GetFunction(iLib, "ReadFloat")
Trixi_ReadBoolean.ProtoReadBoolean = GetFunction(iLib, "ReadBoolean")

  Text.s = "127.0.0.1" : Port.i = 3773
  RetVal = Trixi_Connect(Text, Port)
  If RetVal
    Debug retVal      ; gibt 1 zurück bei Verbindung ? Ist aber verbunden
    Debug "Verbunden"
  Else
    Debug "Nicht Verbunden"
  EndIf
  
;function WriteString(Variable: Integer; Value: PAnsiChar):
VariablenNr.i=58976
Value_Str.s="Helmut's Purebasic Beispiel"


RetVal_Write_Write_Str = Trixi_WriteString(VariablenNr, @Value_Str)
Debug "Write_String"
Debug VariablenNr

Debug RetVal_Write_Str ; gibt 0 wieder zurück wenn er erfolgreich geschrieben hat (stimmt)

;function WriteInteger(Variable: Integer; Value: Integer): Integer; stdcall external 'TRIXI.DLL';
VariablenNr.i=22023
Value_Int.i=114

RetVal_Write_Integer = Trixi_WriteInteger(VariablenNr, Value_Int)
Debug "Write_Int"
Debug RetVal_Write_Integer ; gibt 0 wieder zurück wenn er erfolgreich geschrieben hat (stimmt)

VariablenNr.i=12269 ; TrixiBoolean_2
Value_Boolean.i=0

RetVal_Write_Boolean = Trixi_WriteBoolean(VariablenNr, Value_Boolean)
Debug "Write_Boolean"
Debug RetVal_Write_Boolean ; gibt 0 wieder zurück wenn er erfolgreich geschrieben hat Sstimmt)


VariablenNr.i=56003
Value_Float.f=45.8
RetVal_Write_Float = Trixi_WriteFloat(VariablenNr, Value_Float) ; schreibt den Floatwert nicht richtig wegen dem Punkt?

Debug "Write_Float"
Debug Value_Float
Debug RetVal_Write_Float ; gibt 0 wieder zurück wenn er erfolgreich geschrieben hat, Zahl aber nicht übernommen!

VariablenNr.i=56003

RetVal_Read_Float = Trixi_ReadFloat(VariablenNr) ; gibt keine Kommazahlen wieder

Debug "ReadFloat"
Debug RetVal_Read_Float ; gibt den Wert zurück (stimmt)
VariablenNr.i=18629

RetVal_Read_Boolean = Trixi_ReadBoolean(VariablenNr)
Debug "Boolean="
Debug RetVal_Read_Boolean

;Prototype.i ReadInteger(Variable.i) 

VariablenNr.i=22023
RetVal_ReadInteger = Trixi_ReadInteger(VariablenNr) 

Debug "read Integer"
Debug RetVal_ReadInteger ; gibt den Wert zurück (stimmt)
VariablenNr.i=18629


;Prototype.i ReadString(Variable.i)  
 

VariablenNr.i=58976
RetVal_ReadString$ = Trixi_ReadString(VariablenNr) ; gibt nichts lesbares wieder

Debug "read string"
Debug RetVal_ReadString$  ; Fehler?


VariablenNr.i=12810 ; Text sprechen

RetVal_Run_Script = Trixi_RunScript(VariablenNr) ; startet das Script 
Debug "RunScript="
Debug RetVal_RunScript ; gibt 0 zurück bei Erfolg (Stimmt)

RetVal_Disconnect = Trixi_Disconnect()
Debug "Disconnect="
Debug RetVal_Disconnect ; gibt 1 zurück ? Kann ich nicht verifizieren

  
  CloseLibrary(iLib)
  
EndIf
;                               Erklärung: Teile in -> http://127.0.0.1:3773/
;................(................................) Rückgabewert
;function Connect(Server: PAnsiChar; Port: Integer): Boolean; stdcall external 'TRIXI.DLL';
;function Disconnect(): Boolean; stdcall external 'TRIXI.DLL';
;function IsOnline(): Boolean; stdcall external 'TRIXI.DLL';
;function WriteString(Variable: Integer; Value: PAnsiChar): Integer; stdcall external 'TRIXI.DLL';
;function WriteInteger(Variable: Integer; Value: Integer): Integer; stdcall external 'TRIXI.DLL';
;function WriteFloat(Variable: Integer; Value: Double): Integer; stdcall external 'TRIXI.DLL';
;function WriteBoolean(Variable: Integer; Value: Boolean): Integer; stdcall external 'TRIXI.DLL';
;function ReadString(Variable: Integer): PAnsiChar; stdcall external 'TRIXI.DLL';
;function ReadInteger(Variable: Integer): Integer; stdcall external 'TRIXI.DLL';
;function ReadFloat(Variable: Integer): Double; stdcall external 'TRIXI.DLL';
;function ReadBoolean(Variable: Integer): Boolean; stdcall external 'TRIXI.DLL';
;function RunScript(Variable: Integer): Integer; stdcall external 'TRIXI.DLL';

eroiere weiter… fragt mich doch Einer: Wozu brauchst du Das?:eek:

Gruß Helmut