Quelle: HeX0R
Die Clients können eigene Icons an den Server senden, die dort dann gespeichert werden.
Deshalb saveimage()
Übersetzung von GFA Basic nach Purebasic
-
- Beiträge: 700
- Registriert: 19.10.2014 15:51
- Kontaktdaten:
Re: Übersetzung von GFA Basic nach Purebasic
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Linux Mint 21.x
Re: Übersetzung von GFA Basic nach Purebasic
Und was hat die Art, wie du das Bild speicherst mit dem Ergebnis dahinter zu tun?stevie1401 hat geschrieben:Quelle: HeX0R
Die Clients können eigene Icons an den Server senden, die dort dann gespeichert werden.
Deshalb saveimage()

Läuft auf das selbe hinaus, nur das du nicht die Image-Lib und ergo auch kein Fenster brauchst.
In DecodeStringToImage am Ende einfach statt ctachImage direkt in eine Datei schreiben oder besser als ProcedureReturn den Pointer auf den Speicherbereich + die Länge des Bildes zurückgeben. Und dann so direkt in eine Datei schreiben.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
-
- Beiträge: 700
- Registriert: 19.10.2014 15:51
- Kontaktdaten:
Re: Übersetzung von GFA Basic nach Purebasic
Leider verstehe ich überhaupt nicht was du meinst.In DecodeStringToImage am Ende einfach statt ctachImage direkt in eine Datei schreiben oder besser als ProcedureReturn den Pointer auf den Speicherbereich + die Länge des Bildes zurückgeben. Und dann so direkt in eine Datei schreiben.
Kannst du mir bitte ein Beispiel geben?
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Linux Mint 21.x
Re: Übersetzung von GFA Basic nach Purebasic
Eine (leicht) abgewandelte Version von HeXORs DecodeStringToImage-Procedure:
Ist jetzt nicht von mir getestet, sollte aber ohne Probleme seinen Dienst tun.
Code: Alles auswählen
Procedure DecodeStringToFile(String.s, FileName.s)
Protected *Buffer, L, *StringAscii, success
*Buffer = AllocateMemory(Len(String)) ;Die Binärdatei ist IMMER kleiner, als der String, egal, wir kümmern uns nicht darum.
If *Buffer
CompilerIf #PB_Compiler_Unicode ;Obacht bei Unicode! Base64Decode benötigt den String in Ascii!
*StringAscii = AllocateMemory(StringByteLength(String, #PB_Ascii))
If *StringAscii
PokeS(*StringAscii, String, -1, #PB_Ascii | #PB_String_NoZero)
L = Base64Decoder(*StringAscii, MemorySize(*StringAscii), *Buffer, MemorySize(*Buffer))
FreeMemory(*StringAscii)
EndIf
CompilerElse
;Alles easy, kein Unicode
L = Base64Decoder(@String, Len(String), *Buffer, MemorySize(*Buffer))
CompilerEndIf
If L
;Hier wird eingegriffen. Wir brauchen kein PB-Image, sondern nur aus dem Speicher in eine Datei zu schreiben.
;Image = CatchImage(#PB_Any, *Buffer, L)
If OpenFile(0,FileName)
success = WriteData(0,*Buffer,L)
CloseFile(0)
EndIf
EndIf
FreeMemory(*Buffer)
EndIf
ProcedureReturn success
EndProcedure
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
-
- Beiträge: 700
- Registriert: 19.10.2014 15:51
- Kontaktdaten:
Re: Übersetzung von GFA Basic nach Purebasic
Danke für deine Mühen 
Ich habe es nun mit vielerlei Methoden getestet, ich kann mit Linux nicht wirklich lange Strings senden, maximal so 30KB, sind sie gösser, hängen sich die Clients auf.
Gleicher Sende-Code unter Windows ohne Probleme.
Sende ich unter Linux 4 Icons am Stück, ca 33 Kb, dann hängen sich die Clients auf.
Ich weis nicht was Linux da macht.
Wie kann ich Images mit PB ohne String als Rohdaten an die Clients senden?
Mit SendNetworkData() habe ich es auch schon probiert (allerdings nur den SendeString in den Speicher geschrieben und dann mit SendNetworkData() gesendet), es ist gehupft wie gedupft.

Ich habe es nun mit vielerlei Methoden getestet, ich kann mit Linux nicht wirklich lange Strings senden, maximal so 30KB, sind sie gösser, hängen sich die Clients auf.
Gleicher Sende-Code unter Windows ohne Probleme.
Sende ich unter Linux 4 Icons am Stück, ca 33 Kb, dann hängen sich die Clients auf.
Ich weis nicht was Linux da macht.
Wie kann ich Images mit PB ohne String als Rohdaten an die Clients senden?
Mit SendNetworkData() habe ich es auch schon probiert (allerdings nur den SendeString in den Speicher geschrieben und dann mit SendNetworkData() gesendet), es ist gehupft wie gedupft.
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Linux Mint 21.x