Seite 5 von 6

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Verfasst: 03.01.2017 16:11
von Michael Vogel
Nette Idee, kann vielleicht einmal praktisch sein :wink:
Hab' noch ein paar "Bits" herausgepresst...

Code: Alles auswählen

Macro D:Data.s:EndMacro:Macro V:MemoryStringLength:EndMacro:R=?S:T=R:Repeat:L=V(R):PokeS(T,PeekS(R)):T+L:R+L+1:Until R>=?E:M=V(?S):R=AllocateMemory(M)
If R>0:B=Base64Decoder(?S,M,R,M):F.s=SaveFileRequester("Datei speichern","Bin2Post.pb","Alle Dateien (*.*)|*.*",0):If F And CreateFile(0,F):WriteData(0,R,B):EndIf:EndIf
DataSection
S:
D"DQojUm93bGVuPQkJMjU2CQk7IE1heGltYWxlIFplaWNoZW4gcHJvIERhdGF6ZWlsZQ0KI01heEVudHJpZXM9CTEwMAkJOyBNYXhpbWFsZSBBbnphaGwgZGVyIGFuZ2V6ZWlndGVuIFplaWxlbg0KI01heEZpbGVsZW49CQk1MDAwMDAJOyBNYXhpbWFsZSBHcvbfZSBkZXIgRGF0ZWkgaW4gQnl0ZXMNCiNSZWZyZXNoUmF0ZT0JNTMyCQk7IEFr"
D"dHVhbGlzaWVydW5nc3JhdGUgZGVyIFN0YXR1c3plaWxlIChpbiBCeXRlcykNCg0KRW5hYmxlRXhwbGljaXQNCg0KU3RydWN0dXJlIFNldA0KCU5hbWVJbi5zDQoJU2l6ZUluLmkNCglTaXplNjQuaQ0KCSpCdWZJbg0KCSpCdWY2NA0KCVR4dC5zDQpFbmRTdHJ1Y3R1cmUNCg0KR2xvYmFsIGV2ZyxldnQNCkdsb2JhbCB2di5TZXQNCg0KUHJv"
D"Y2VkdXJlIENvbnZlcnQoTmFtZUluLnMpDQoNCglQcm90ZWN0ZWQgaixsZW4NCg0KCWxlbj0jUm93bGVuDQoJdnZcVHh0PSIiDQoNCgl2dlxTaXplSW49RmlsZVNpemUoTmFtZUluKQ0KCUlmIHZ2XFNpemVJbj4wIEFuZCB2dlxTaXplSW48PSNNYXhGaWxlbGVuDQoJCXZ2XEJ1ZkluPUFsbG9jYXRlTWVtb3J5KHZ2XFNpemVJbikNCgkJdnZc"
D"QnVmNjQ9QWxsb2NhdGVNZW1vcnkodnZcU2l6ZUluKjEuNSkNCg0KCQlJZiB2dlxCdWZJbj4wIEFuZCB2dlxCdWY2ND4wDQoJCQlJZiBPcGVuRmlsZSgwLE5hbWVJbikNCgkJCQlJZiBSZWFkRGF0YSgwLHZ2XEJ1ZkluLHZ2XFNpemVJbik+MA0KDQoJCQkJCVNldEdhZGdldFRleHQoMSwiQ29udmVydGluZyB0byBCYXNlNjQgRm9ybWF0IikN"
D"CgkJCQkJdnZcU2l6ZTY0PUJhc2U2NEVuY29kZXIodnZcQnVmSW4sdnZcU2l6ZUluLHZ2XEJ1ZjY0LHZ2XFNpemVJbioxLjUpDQoNCgkJCQkJI1E9I0RPVUJMRVFVT1RFJA0KDQoJCQkJCXZ2XFR4dCsiTWFjcm8gRDpEYXRhLnM6RW5kTWFjcm86TWFjcm8gVjpNZW1vcnlTdHJpbmdMZW5ndGg6RW5kTWFjcm86Uj0/UzpUPVI6UmVwZWF0Okw9"
D"VihSKTpQb2tlUyhULFBlZWtTKFIpKTpUK0w6UitMKzE6VW50aWwgUj49P0U6TT1WKD9TKTpSPUFsbG9jYXRlTWVtb3J5KE0pIisjTEYkDQoJCQkJCXZ2XFR4dCsiSWYgUj4wOkI9QmFzZTY0RGVjb2Rlcig/UyxNLFIsTSk6Ri5zPVNhdmVGaWxlUmVxdWVzdGVyKCIrI1ErIkRhdGVpIHNwZWljaGVybiIrI1ErIiwiKyNRK0dldEZpbGVQYXJ0"
D"KE5hbWVJbikrI1ErIiwiKyNRKyJBbGxlIERhdGVpZW4gKCouKil8Ki4qIisjUSsiLDApOiINCgkJCQkJOyB2dlxUeHQrIklmIEY8PiIrI1ErI1ErIjpJZiBDcmVhdGVGaWxlKDAsRik6V3JpdGVEYXRhKDAsUixCKTpDbG9zZUZpbGUoMCk6RW5kSWY6RW5kSWY6RnJlZU1lbW9yeShSKTpFbmRJZiIrI0xGJA0KCQkJCQk7IGRhIENsb3NlRmls"
D"ZSAmIEZyZWVNZW1vcnkgYXV0b21hdGlzY2ggcGFzc2llcmVuIHVuZCAnSWYgMCBhbmQgc29tZXRoaW5nJyBvcHRpbWllcnQgd2lyZCAodW5kICdzb21ldGhpbmcnIG5pY2h0IGF1c2dlZvxocnQgd2lyZCkgZ2VodCdzIGv8cnplci4uLg0KCQkJCQl2dlxUeHQrIklmIEYgQW5kIENyZWF0ZUZpbGUoMCxGKTpXcml0ZURhdGEoMCxSLEIpOkVu"
D"ZElmOkVuZElmIisjTEYkDQoJCQkJCXZ2XFR4dCsiRGF0YVNlY3Rpb24iKyNMRiQrIlM6IisjTEYkDQoNCgkJCQkJRm9yIGo9MCBUbyB2dlxTaXplNjQgU3RlcCAjUm93bGVuDQoJCQkJCQlJZiBqICUgI1JlZnJlc2hSYXRlPTANCgkJCQkJCQlTZXRHYWRnZXRUZXh0KDEsIkdlbmVyYXRpbmcgZGF0YSBibG9ja3MgWyIrU3RyKGopKyIgLyAi"
D"K1N0cih2dlxTaXplNjQpKyAiXSIpDQoJCQkJCQkJV2hpbGUgV2luZG93RXZlbnQoKTpXZW5kDQoJCQkJCQlFbmRJZg0KCQkJCQkJSWYgaisjUm93bGVuPj12dlxTaXplNjQ6bGVuPXZ2XFNpemU2NC1qOkVuZElmDQoJCQkJCQlJZiBsZW4+MA0KCQkJCQkJCXZ2XFR4dCsiRCIrQ2hyKDM0KStQZWVrUyh2dlxCdWY2NCtqLGxlbikrQ2hyKDM0"
D"KSsjTEYkDQoJCQkJCQlFbmRJZg0KCQkJCQlOZXh0IGoNCg0KCQkJCQl2dlxUeHQrIkU6IisjTEYkKyJFbmREYXRhU2VjdGlvbiIrI0xGJA0KDQoJCQkJCUlmIHZ2XFNpemU2ND4jTWF4RW50cmllcw0KCQkJCQkJU2V0R2FkZ2V0VGV4dCgwLExlZnQodnZcVHh0LDQwOTYpKyNMRiQrIi4uLiBhbmQgc28gb24iKyNMRiQrIlBsZWFzZSB1c2Ug"
D"dGhlIGJ1dHRvbiAnQ29weSB0byBjbGlwYm9hcmQnIHRvIGdldCB0aGUgY29tcGxldGUgdGV4dC4iKQ0KCQkJCQkJU2V0R2FkZ2V0VGV4dCgxLCJDb252ZXJ0aW5nIGZpbmlzaGVkIFtwYXJ0aWFsbHkgcHJldmlld10gKCIrU3RyKHZ2XFNpemU2NCkrIiBCeXRlcyB0b3RhbCkiKQ0KCQkJCQlFbHNlDQoJCQkJCQlTZXRHYWRnZXRUZXh0KDAs"
D"dnZcVHh0KQ0KCQkJCQkJU2V0R2FkZ2V0VGV4dCgxLCJDb252ZXJ0aW5nIGZpbmlzaGVkIFtmdWxsIHByZXZpZXddICgiK1N0cih2dlxTaXplNjQpKyIgQnl0ZXMgdG90YWwpIikNCgkJCQkJRW5kSWYNCg0KCQkJCUVuZElmDQoJCQkJQ2xvc2VGaWxlKDApDQoJCQlFbmRJZg0KCQkJRnJlZU1lbW9yeSh2dlxCdWY2NCkNCgkJCUZyZWVNZW1v"
D"cnkodnZcQnVmSW4pDQoJCUVuZElmDQoJRWxzZUlmIHZ2XFNpemVJbj4jTWF4RmlsZWxlbg0KCQlTZXRHYWRnZXRUZXh0KDEsIkZpbGVzaXplIGV4Y2VlZCB0aGUgbGltaXQgb2YgIitTdHIoI01heEZpbGVsZW4pKyIgQnl0ZXMhIikNCglFbmRJZg0KDQpFbmRQcm9jZWR1cmUNCg0KT3BlbldpbmRvdygwLCNQQl9JZ25vcmUsI1BCX0lnbm9y"
D"ZSw0NDAsMjQwLCJL/HJ6ZXIgYWxzIEt1cnplcnMgQmluMlBvc3QiLCNQQl9XaW5kb3dfU2NyZWVuQ2VudGVyZWR8I1BCX1dpbmRvd19TaXplR2FkZ2V0fCNQQl9XaW5kb3dfU3lzdGVtTWVudXwjUEJfV2luZG93X01pbmltaXplR2FkZ2V0fCNQQl9XaW5kb3dfTWF4aW1pemVHYWRnZXQpDQpTbWFydFdpbmRvd1JlZnJlc2goMCwxKQ0KDQpF"
D"ZGl0b3JHYWRnZXQoMCwxMCwxMCxXaW5kb3dXaWR0aCgwKS0yMCxXaW5kb3dIZWlnaHQoMCktNDAsI1BCX0VkaXRvcl9SZWFkT25seSkNCkVuYWJsZUdhZGdldERyb3AoMCwjUEJfRHJvcF9GaWxlcywjUEJfRHJhZ19Db3B5KQ0KVGV4dEdhZGdldCgxLDEwLFdpbmRvd0hlaWdodCgwKS0yMixXaW5kb3dXaWR0aCgwKS0xMjAsMTgsIkRyb3Ag"
D"YSBmaWxlIGludG8gdGhlIHdoaXRlIGFyZWEgdG8gY29udmVydC4iLCNTU19DRU5URVJJTUFHRSkNCkJ1dHRvbkdhZGdldCgyLFdpbmRvd1dpZHRoKDApLTExMCxXaW5kb3dIZWlnaHQoMCktMjQsMTAwLDIyLCJDb3B5IHRvIGNsaXBib2FyZCIpDQoNClJlcGVhdA0KDQoJU2VsZWN0IFdhaXRXaW5kb3dFdmVudCgpDQoJQ2FzZSAjUEJfRXZl"
D"bnRfU2l6ZVdpbmRvdw0KCQlSZXNpemVHYWRnZXQoMCwxMCwxMCxXaW5kb3dXaWR0aCgwKS0yMCxXaW5kb3dIZWlnaHQoMCktMzUpDQoJCVJlc2l6ZUdhZGdldCgxLDEwLFdpbmRvd0hlaWdodCgwKS0xNyxXaW5kb3dXaWR0aCgwKS0xMjAsMTUpDQoJCVJlc2l6ZUdhZGdldCgyLFdpbmRvd1dpZHRoKDApLTExMCxXaW5kb3dIZWlnaHQoMCkt"
D"MjAsMTAwLDE4KQ0KCUNhc2UgI1BCX0V2ZW50X0dhZGdldERyb3ANCgkJSWYgRXZlbnRHYWRnZXQoKT0wIEFuZCBFdmVudERyb3BUeXBlKCk9I1BCX0Ryb3BfRmlsZXMgQW5kIEV2ZW50RHJvcEFjdGlvbigpPSNQQl9EcmFnX0NvcHkNCgkJCXZ2XE5hbWVJbj1TdHJpbmdGaWVsZChFdmVudERyb3BGaWxlcygpKyNMRiQsMSwjTEYkKQ0KCQkJ"
D"Q29udmVydCh2dlxOYW1lSW4pDQoJCUVuZElmDQoJQ2FzZSAjUEJfRXZlbnRfR2FkZ2V0DQoJCUlmIEV2ZW50R2FkZ2V0KCk9Mg0KCQkJU2V0Q2xpcGJvYXJkVGV4dCh2dlxUeHQpDQoJCQlTZXRHYWRnZXRUZXh0KDEsIlRoZSBjb21wbGV0ZSB0ZXh0IHdhcyBjb3BpZWQgdG8gY2xpcGJvYXJkICgiK1N0cih2dlxTaXplNjQpKyIgQnl0ZXMg"
D"dG90YWwpIikNCgkJRW5kSWYNCglDYXNlICNQQl9FdmVudF9DbG9zZVdpbmRvdw0KCQlFbmQNCglFbmRTZWxlY3QNCkZvckV2ZXINCg0KOyBJREUgT3B0aW9ucyA9IFB1cmVCYXNpYyA1LjQ0IExUUyAoV2luZG93cyAtIHg4NikNCjsgQ3Vyc29yUG9zaXRpb24gPSA4MQ0KOyBGaXJzdExpbmUgPSA3Mw0KOyBGb2xkaW5nID0gLQ0KOyBFbmFi"
D"bGVYUA0KOyBIaWRlRXJyb3JMb2c="
E:
EndDataSection

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Verfasst: 03.01.2017 17:02
von NicTheQuick
Der Code geht nicht. Aber jetzt habe ich versucht den zu reparieren, und krieg es selbst nicht hin. :lol:
Ich hab zuerst den String in Ascii gewandelt, dann durch den Decoder gejagt und dann versucht es als Ascii, Unicode oder UTF-8 zu interpretieren. Überall kommt nur Mist raus.

Code: Alles auswählen

;Original
Debug PeekS(?S)

;Stringlänge bestimmen und ausgeben
M=MemoryStringLength(?S)
Debug M

R = AllocateMemory(2 * M + 2)

If R
	;Unicode zu Ascii konvertieren
	PokeS(R + M, PeekS(?S), M, #PB_Ascii)
	
	B = Base64Decoder(R + M, M, R, M)
	Debug B
	Debug PeekS(R, #PB_Ascii)
	Debug PeekS(R, #PB_UTF8)
	Debug PeekS(R, #PB_Unicode)
;	F.s=SaveFileRequester("Datei speichern","Bin2Post.pb","Alle Dateien (*.*)|*.*",0):If F And CreateFile(0,F):WriteData(0,R,B):EndIf:
EndIf
DataSection
S:
Data.s"SGFsbG8gV2VsdA==" ;Hallo Welt
E:
EndDataSection

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Verfasst: 03.01.2017 17:08
von Michael Vogel
NicTheQuick hat geschrieben:Der Code geht nicht. Aber jetzt habe ich versucht den zu reparieren, und krieg es selbst nicht hin. :lol:
Ich hab zuerst den String in Ascii gewandelt, dann durch den Decoder gejagt und dann versucht es als Ascii, Unicode oder UTF-8 zu interpretieren. Überall kommt nur Mist raus.
Dein Code funktioniert, glaub' ich, schon - schau dir 'mal den Speicher an...
Allerdings zeigt er bei Unicode-Compilierung das Ergebnis "falsch" an, weil es ja im ASCII-Format vorliegt... :cry:

Code: Alles auswählen

Procedure ShowMem(*memory,bytes=16)
	DataSection
		HexVal:
		Data.a '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
	EndDataSection
	Protected s.s,t.s
	Protected i,char
	For i=0 To bytes-1
		char=PeekA(*memory+i)
		s=s+Chr(PeekA(?HexVal+char>>4))+Chr(PeekA(?HexVal+char&15))
		If char<' ' : char='.' : EndIf
		t=t+Chr(char)
		If i And i&7=0 : s+" " : t+" " : EndIf
	Next i
	Debug "; "+s+"  "+t
EndProcedure

Debug PeekS(?S)
M=MemoryStringLength(?S)

R = AllocateMemory(2 * M + 2)

If R
	PokeS(R+m, PeekS(?S,#PB_Ascii), M,#PB_Ascii)
	ShowMem(R+m)
	B = Base64Decoder(R + M, M, R, M)
	ShowMem(R)
	
	Debug PeekS(R, #PB_Ascii)
EndIf
DataSection
	S:
	Data.s "SGFsbG8gTmljIQ=="
	E:
EndDataSection

Somit müsste man das Folgende wohl auch noch überarbeiten, damit es in Unicode funktioniert (ich hab' zumindest einmal eine zusätzliche Komprimierung eingebaut):

Code: Alles auswählen

Macro D:Data.s:EndMacro:R=?S:T=R:Repeat:L=MemoryStringLength(R):PokeS(T,PeekS(R)):T+L:R+L+1:Until R>=?E:M=MemoryStringLength(?S):R=AllocateMemory(M):If R:B=Base64Decoder(?S,M,R,M):Z=5009
If B:X=AllocateMemory(Z):F.s=SaveFileRequester("Datei speichern","Binary to Source.pb","Alle Dateien (*.*)",0):If F And UseLZMAPacker() And UncompressMemory(R,B,X,Z,2)=Z:CreateFile(0,F):WriteData(0,X,Z):EndIf:EndIf:EndIf
DataSection
S:
D"XQAAAAEABoLDdGqXokOeZOsks38InxAn1McyNE59hkQktTB/FHoexklhMd21mY2lyEVcDigL0DArhzWHD7Vvs3hIXNRN9CUVBf5iLtBevV9/ZIaew/J5VwOEU0KpyBNV5dugCAr6icGmN43a9w8UjEVauXLAbPEftjZA+pEXBQz6fcSW6OsPIQGy+QGimog3//O74KvV0TsprSeYoB6jZdV6oT7afImpjK9hNn4ZZTBe6cBvsx5plVw6SP44V/3g"
D"4yK3iGjHXTJ93iLsqjOdqcQ9Y3PUqeWMjH9rcsi9Aq/uaaLAOIzf/9SL5BjdRtuTM7Ppjy+tyiY3UgdcLHrru9kIC8HSwPq3ASNH9YtRb83KFqN/V6+OLqCE9ZAHlPPADAap3qsBAWenQ+NouVpWq6XdriMITWBbgZkgTJJAivYR5Kj2r7qrtph4oMeQB0skyE7Qu7DKbA6ISx5wInw2QHVWTCqi3c36K2cJaQUfuN4wGsoKvXh0WZDs75bi+Y2X"
D"zhyXIjy9wrQQ9WQqDwguviNsGAaaf9Wyw+QRmmK2Kr/noVgUfF+nnBJVRPijt+OhhHiUvip28ab7ZKeTb6jDEaCnHPGRLfz5x2BgpbT/NW6ZD5UAd6jLcU8NEIz+z/kv50GDmbOr+JZIUGZ7JeyeHfL4I/oR0R02vT/O/FqdhixQ3Yo87760iEau8I6gpRGV//J0WJyPiauW6QllbYIqzm0KkNSvplSivhQcd2SlPn77clqv3B27ZYzyFskC3MF2"
D"FGIYuyACybudTmnNZSb0oK+pb+XgXq1d7aQNvU8C2a1MsLBx+gmbAc21OycItIi7ALdolY3hrB3Bm7Ao5Q1ACxlH3vXgvgQ2It3CPRkmNVs2ytG6aJnzLOjqNLr9Yh9JqwTKWp+nHnOqJxHFi7QftETkEybC442uMwQFR2hIBTT3fuf6gRUlGVN47+lS344Md4CPJTsQTsvq4Y+1F3ctQVXUGaQ5IU2cAP6o9K7mDemsQYe/yIB1TiJoSfL/cV88"
D"6eB54oB7PDhghZCXt/lrKqpvfefzCK8y2YfaMN4I73XigFbQYDCvf5+uTJWaG36flHzoKq8qzeBN8Cb3wHNgJtYaVgrI2XucFO3LWt8tDUy0SOElZJe1Muky7G8j99Qc7UsZl7wi2ywSNTr7pYfUwkptktsjIR7GbhH2Lo7UnUIf4vRFGu98CeqtTRd0i4YLZEF/9RItM/fSn3P99HENdugsewfRyX/O/LQT4QL1MkGeHemHLLGsoAGIZ+A4R3rR"
D"JHNx6O4YO7mj//KRO2CfT071bw1CXiSWeOr0bx5wka/lFhVpGz5GL7ICO2V0AGuZqJNWLBHbvtectf/LLfLY5rCsRmYVM3cu/7nAahMzsYZbo2uvZalPTN+zn6ioIqjdtqBrPHiq/FVQnO/Z/uCapSYeCAwzc9S8Aqf3P5LZQpRwUozFinRThKa6s7Cogxj+BusvK6cbxzPiFDfvV0Wuq9KYkdn4NxZhQu5BngxgROQmJ/5ZlCKCbS7ywc8OuMgD"
D"s+UXNTDn2z3Azfda7j+X1X9eGiVDiZD8AELCnYLl3mPerBIQHXgKIWptI2opwk/9n2QnUqi/1+MyLoR7UzGmJmEvCI6sEuuNbBE/4Al7kwdK+2Mi9L1vR55De0UmY/785kN5OY464tN21vErSyqLV/ibd9CwyiBIJcF6ZSlkPXcsNxsVGOuUQ7kGj1wyYxBlfwTm3DCyYgde+CGU+EWUv64lgcZSvRJm2z3kAMAZsaOyRmoNGiYWnNOxKMxPIoLM"
D"mwm++N/lC38AYpwf+4JB30lBlfOpvSI9mxvhL9mLqFVzU5W6ee1eYQCzmpnbJ7p0rNDgyxS8hQtQ43b+sugB+3sjBYvR3+FilMS7IWe+7C5cNJVhfrIKzH7hxReJB24qPtKOQIrqqhpuH2Z8JlJMPb5Aie0rzRypOwC+/G2IEtIfcXwzD/EtvEapCFqx2wBrR79A/jRWnk+PAf2aVeCmsSyEFXJ06+tt2iveFgzBUtLaM3SXjIY13n9+rpebmdc6"
D"XMxrbnLi44FX3wpoHvJ8msk6sNprf5j/PTxT/VoulvFfCugweMpcs1krgg8xphSNvSlhuv3dZsuInN4xbvv7tlS05L0RVcUWJ4xb1wO0mx+gseSUyPImB2WXoQ/g35uefAX2lV9MnKM4YInFNKcrpeVD57BuyumSX208CL7ZiKT4CpIWWYZukfjbqIQHm8cNQr+h8+L9drk20StQLWNiP3rLvNes+C+s+E3e35BT9l6wjLSugcg1mfRtWSA+DKTm"
D"Y2g2me0/hO552Lfvt/Noz1JkLHNUH2pDgbtavQ7vBVDLNaKEgsvpu230l5ouAMyTo3UzHpoU9qVmXJ0ZIQ5qSXSsylPTwGnL+r31VQ880IEpG5MslSNs+2VB9OhsY3YKOrKVw9Lo9v/lNY77prjF986udhTbhap4RKyJwyXcT8/aRp5LFIFewrqtmFHBuji5iqk8PYc0y0X144jEkWT9gab83IPOjXjofSDpltTu9LF/fij/+b70mQ=="
E:
EndDataSection

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Verfasst: 04.01.2017 18:50
von Kurzer
Hallo Michael,

unter PB 5.51 (Unicode) habe ich Deinen code auch nicht erfolgreich ausführen können (eine 0 byte Datei wurde erstellt).

Komischerweise wird mein Code aus dem ersten Post (das Bin2Post Icon) auch unter PB 5.51 (Unicode) korrekt gespeichert, obwohl er seinerzeit mit einer Nicht-Unicode-PB-Version erstellt wurde.

Kann es sein, dass du auch am Encoder was verändert hast, was sich nun als Fehler in Deinem Base64 kodierten String auswirkt und gar nicht durch "Reparaturen" an der Decoderroutine behebbar ist?

Edit: Unter PB 4.51 im ASCII Modus kann ich Deinen code entpacken.
Edit 2: Eine Komprimierung wollte ich seinerzeit auch einbauen, aber leider wurde im Laufe der PureBasic-Evolution die Packerlib verändert, so dass der generierte Entpacker-Code nicht mit allen PB Versionen kompatibel wäre. Ich habe es dann doch dabei belassen, dass der Versender seine Dateien vorher selbst zippen sollte.

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Verfasst: 04.01.2017 22:28
von NicTheQuick
Bei mir funktioniert auch dein erster Code nicht. Vielleicht mache ich auch erst mal noch ein PB-Update. Gab ja vor kurzem eins.

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Verfasst: 05.01.2017 00:11
von Kurzer
Du hast Recht Nic,

ich habe mich von meinem Bildanzeiger in die Irre leiten lassen.
Die Icondatei ist nach dem entpacken 88 Bytes groß, was vermutlich zu wenig ist. Der Bildanzeiger (Totalcommander intern) hat mir das Icon angezeigt, allerdings als irgend ein Windows Standardsymbol. Normalerweise hätte da Kermit angezeigt werden müssen.

Sorry, mein Fehler. Evtl. behebe ich das Problem die Tage mal.

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Verfasst: 05.01.2017 23:35
von Kurzer
Bin2Post ist nun Unicode-fähig. Der Quellcode im ersten Post wurde angepasst und enthält nun die Version 1.01.
Daten, die mit dieser Version kodiert worden sind, werden sowohl unter PB mit ASCII Support, als auch unter PB 5.50+ korrekt dekodiert.

Gruß Kurzer

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Verfasst: 06.01.2017 12:11
von NicTheQuick
Wunderbar. Ich hab es jetzt auch hinbekommen noch zu kürzen. Die Repeat-Schleife und die Macros brauchst du nämlich nicht:

Code: Alles auswählen

PokeS(?S,PeekS(?S),-1,#PB_Ascii):L.i=MemoryStringLength(?S,#PB_Ascii):*D=AllocateMemory(L):If *D:OS.i=Base64Decoder(?S,L,*D,L)
F.s=SaveFileRequester("Datei speichern","Bin2Post.ico","Alle Dateien (*.*)|*.*",0):If F And CreateFile(0,F):WriteData(0,*D,OS)
CloseFile(0):EndIf:FreeMemory(*D):EndIf:End:DataSection:S:
Data.s "AAABAAEAMDAAAAEACACoDgAAFgAAACgAAAAwAAAAYAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAEAwQAB4N0AJSEdwAOzbYAfIKEAA"+
"ekigBFxa8AEkQyAGRqbAAEg/wAFHK0AASt/ABM6qQABGdKACyEcAAspJEADuXMACRmNAAskmwAM7KLACzClACExsQAZOPMACZlXAAswuwAZMK8"+
"AEnj2QBEwvwAJoTlACrVvgAsXjwALKrUABRWXAAplZQADFY8ACmFgAA1pIkAR9S+ACu0nwAkdGIAnKKZADrEqgAqtfoAzNLUALWFiwBR9t8AKH"+
"NPADe1ogA3xLQALJ68ACyLcQA1lH8ADCgQADV+agAElfcAFGbkAFL0wgAhVDgAVtTEAJaUigArpfAANKSsANfu9wAHk3kANryjACJ07wAsq/AA"+
"JHKEAB5VRgA2rZcAJ2VPAAe1lwBW4soAK31pADjTsADv8ewAKGtRAEymnAAcRTAABHJUADSFbwA84rwATNbkACyM6QArrJYAWOvYADSdjQBJ28"+
"QAUf7sADjMuQBIrugAK5uDADnMpgAkLiwAmJ2TABqaiAA3va0AI33oAETKnABk+twAPNTgABeY9wAhXEgAPNq/APz+3AArjHwAKpP0ADScgwAQ"+
"LkQANKzzAAweBACMbGAAGoXnAEjkyAA1ppYAN7PxAFT85AApnPoAHKKUAAS0/ACc4tQAJmxeACx1YQA0eEwANItzAAQ0IAA0o/kACJyCADnUwg"+
"C0wsQABN7MAGTcvAC0vrwAhP7wAOzm5AA08twAlN7UAJR+oAAEwvwAFGKEAGzO/AAEefUABQM1AAR8YABMTkQARLuqAByEaABsdnQAnMbcAMjm"+
"7AActpwAE+/bALzW5AAcbmAAWMr4ACReXACUe20AfNLMABp1YgB8/uAAlIKkABii8AA3wvEAfM7EABy2/AA0PjwAHHJUAARKLABJ2fEAROL8AD"+
"ri0gBY5vgARrz0ACR+nAA3u4cAZO7EAARu/ABY/sAA/PX0AEzO4AArnY0ACLysADnczAAMDkwAKsa0AESypAAUTkwAFH7kAASNcQAJnu8AWNvD"+
"AB5NNAAcHiQADFqEAASM9wDEhIQAFDUgANTe4ACVi30ABquOAEvr1wAsvKcAIVw8ACx+dgBU68QAROzEADy89wA8zvkANO7cACx98QAUcuQA5P"+
"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"
E:
EndDataSection

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Verfasst: 06.01.2017 18:26
von Kurzer
Doch, die Macros sind nötig, wenn der Code (wie ursprünglich vorgesehen) maximal abwärtskompatibel sein soll.
Mit PB 4.31 bekommst Du Deine Version leider nicht ausgeführt, weil es da noch keine Zeilenumbrüche am "+" gab.

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Verfasst: 06.01.2017 21:07
von Kurzer
Ich habe die Dekodier-Routine etwas kürzen können. Die Schleife ist nun weg, auch gibt es keine DataSection mehr.
Das ganze sieht nun so aus:

Code: Alles auswählen

;*******************************************************************************************************
;* This PureBasic source was generated by Bin2Post, a file converter for sharing binary files in text
;* based forums. See here for more information http://www.purebasic.fr/german/viewtopic.php?f=11&t=26298
;* Copy & paste this code into your PureBasic IDE and run it via F5 (PB Version 4.31+ is needed).
;* You will be asked for a directory where the original binary file will be created.
;* Filename: Wikipedia.png - Binary filesize: 2679 - Base64 encoded size: 3572
;*******************************************************************************************************
Macro D:T$+:EndMacro:L=3572:F$=SaveFileRequester("Save file","Wikipedia.png","All (*.*)|*.*",0):If F$<>""
D"iVBORw0KGgoAAAANSUhEUgAAAIQAAAAsCAIAAAAraYdzAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAKKUlEQVR42u1ZPWgiXReet02TsU1gJ5ZuQJ"
D"l0YiJoZWCmiI2B1UYLIauNgkJkUqwYSECbTMJaaDMGkmYsFJJKwRjsHCZLNuXsLJh2bpqt3+LA5TI//iR5Yb8v3mq8M/fcc85zznPOvf7z588f"
D"ajn+jvHPEowlGMuxBON/FIxIJEL+3NnZKZVKqqoWi0U8+eXLl0QiIUnS5eUlOWNdfnt7+zH9q+u63+9/fn5+ExgIoWKxKEkSRVGnp6eZTAbmB4"
D"PB/v4+QiiRSNTrdYzcYDAgP0MIpdPpTqeTSCROTk5omv6YYKTTaUmS6vU6xOjraQoh9PnzZ4TQ9fU1z/N4vlKpVCoVn883Go1gxuPxxOPxUqlE"
D"Lq9UKq1W6+np6cPSDkJobW2Noiie56+vr99aMwqFgiiKZBKQIN3e3gaDQciVnz9/msLf4/EcHh7OExH/r0MUxR8/fnQ6HYTQ8/PzTHqYAYaqqn"
D"6/n6Kop6cnhmFM2QeARyIRqCjkQieEPtTweDxXV1cXFxdzMtXsbsrv96uqWiqVSHfruu7xeCiKqtfrxWLR6vRYLMYwzOnpKTy/vLzgV6urq5Cz"
D"lUrl7u4Oz3u93tPTU9sewfQl7MswjHUe5HAcFwwGsSbk7uQ4OTnx+XwURXU6nfPzc+sHOzs7Xq+XpOgp5pjGYDBIp9NPT0+dTicWi5Gs/nowJE"
D"lKp9MMw5jYPxaLdTodiqJMOGGoyGQCIaZeADSGviuTyQBymBtLpVI8HscSVFXd3d2FxoHsCHDughq6ru/v76uqSm4E7qAoCnMFfMZxHNYcIbS7"
D"u6uqKuZ3Xddbrdb5+bnX6wXsTT6xmmMq3Z8+fQL5a2trCCETu7wGDKcyjv0IlcNUaXRdN8XLysoKRVHW7aATI4X4/f6DgwNrUlu/tJ3HWUvStH"
D"X3Tqdzd3eHIwA3JqbYArAZhhmNRmT2O5lDlm7sfWD1KcgtcOgjK4S1VbAt71dXVyaXzQlGoVB4eXkhBS4KBt7LOmPaXZIkEnJbMLD5ZO7OBEMU"
D"xcvLS8xLczLVXGDYlnFRFM/Pz3VdN81LknRxcWHddR4wYO3NzY1t2V8UDFIr0+7pdNqKtxMYwAE0TZNnt+lgWDtJYKrRaARV6k3XIVDGyeiA/S"
D"4vLweDAWmAU0c7E4yHh4dCoTCFWOcEA0InGAySx36cKxRFvby8pNNp66nYCQy8nHTlFDAAPJ/Pt7q6iicfHh4QQqb0eiUYULJwdEiSdHx8jFsF"
D"mqahoYKO1vb0Px0Mn8+nqqptBZoTDOgdoQ7run5zc0PGIOwOXv79+7ckSVZNZoIxk/dw2iGEvn79ampqbPug14CByzjYTNZYj8ej6zpUp1gs5v"
D"V6rcbMkxmrq6t+v5+m6dFoZJsc08HgeR46To7j4vG4iehMu0ciEet12buAAaXU1OxgztB1fQpTLXBrC3UsGAweHh5CB42LR6FQYBjm9vbW1NEu"
D"WjNAlFOhm79mzNxdVVWfz4cQIjFzAgO3KqTyTuaIonh8fGzLDbbXGa8EA5dxn89n6tAhaRiGCQaDTjvN2U3BT1uN3xEMHF4HBwc4Tp3AACo2NZ"
D"NO5ng8Hp7nbQsDONDUCLz+/wwo47hCmJJmOuPPCYaJD/87MGAj0i9OYIB8E73YmgOle4omwFS2JLYwGEAjTkfuKX002AnXGKSLbU/guCk4OTnB"
D"H+MvTUnjNG+7Owl5sVjUdR1XDl3XI5GIrus8z9frdQi1TqfTarXu7u7q9br13tpkzmAwKBaLqqo6XUPh2wGfz/f9+3dr5VgMDISQ3+83nUXx7U"
D"g8HrcF3HSZwzAMeM32bsr015bT3dTV1RVN007zU3YnB8dxcCR2uptiGGZ7e5vneVKmrTmFQuHh4WHK/2nWD6y3q8u/Xf+isQRjCcZyLMH46GCM"
D"x2OKora2tv5O+w3DcLlcf4l8RzCq1Sr5MxQKkQ6VZXljY2Omi6vVqtvtlmWZZdl8Pj/ly5kCDcNoNpvkDE3TqVTq1W6SZTmbzUqSFA6HcdwcHR"
D"2FQqHpqs45er1eNptNJpP5fB6Unyl2WmYEAoF8Ph+NRjVNq1arLperXC6TXo5Go9OlBwKB+/t7wzAoipoeIPMINAxjfX0dFDYMI5vNtlqtt/iL"
D"47hcLofBwCG4EBjr6+udTqdWq1kDDkvTNE0QhJnaTgPDpGs8Hp8Z4KbQqNVq3W73HbN+ZWUFKzwej9/Ifu8CBqihaRpN06aAW1TaAmBAXk8mk1"
D"6v1+/39/b2wBewJUIol8thbSCZ+v1+MplMJpPNZhNu5RRFabVaJOfk8/l5BJrAaDQawFGNRqPf7+dyuVqtRlHU2dmZy+WSZVnTNLyKZVlFUXCQ"
D"yrIMz2AgTdP9fh9mSPeBEIQQy7LRaLTX68myHI1GFUUBuyCP4TNN08rlMmg7Ho/b7TZN0/C9Sex4PO73+1jsK8EAX3S73XA4HAgEyuVyOBzG9C"
D"LLcq/XE0XRNjMAyOFwqChKNBrlOE6SJJfLJQjCxsZGKpWaRyAoAFTZbDYfHx8xd52dnaVSqUwm43a78/m8IAgAJBYbj8fdbjesxW9JMMBT2Gvg"
D"etid4zhwfSAQCIfDuVxO0zSe54fDoWEYR0dH3W630WgoiiKKomEYiUQCrBYEgabpfD4vy3Kz2ex2u+TbQCDQarXcbvdbwcCvNjc3k8kkBDJFUb"
D"iomMAgnzVNA/PgmWXZVCo1j0DbzCAnTbRQrVYRQiBhPB7zPD+ZTDRN6/V6sJbjOJZlyV2whEwmE41GwXZZlmVZbrVapEOwo4Ggms1mv98HVBBC"
D"VmjB/Eaj0W63Q6EQRVGKouRyOZJpFwBD07Tt7e3JZEK+WllZmUwmtsXZCYxerycIwv39ve1eUwSaagao5Ha7bcEYj8fZbJbcheO4vb09hFAymQ"
D"T5HMeFQiFBEB4fHyFCsQTSdqw8OYm/hAeaptvtdrfbJXWwgkHGx7sVcPwqEAgALVp7aicwgFiGwyEEBayaR6AJDE3TgPSsYBiGwXHc2dnZ1tYW"
D"WV1qtRr0mqSBUANANyxBEAScMVAVTAjF43FY++vXr3K5jA3EjERmD/lWEIThcAh2mQycds6o1WqhUAgSGSEE5A5WQT9eLpcVRYFumqZpsjeF1r"
D"Pf73/79i0cDguCAM8gQRAEWZaBjkKhkKIo8wis1WrVahWHFVBHs9msVqtnZ2dQGKCGt9vtXq8Ha6FlgCWbm5vdbheSAMrY3t6eKIqbm5ssy4ZC"
D"IWgryuUyy7LApXBOguLMcdzGxgbUcE3TRFEE2snlcv1+X5ZlUANKC5QiTdPgLTY/EAi4XC5gKpyj73YCNwxDURS3203WopkDOhCWZa2M9DqB8w"
D"xBEJwowqk7pygKcwMQndvtpmkac/14PEYIhcPh8XjsdrvBnF6vB0Fsy7d4yce9mzJ59l3OJcuLwlf6kWXZhdLCGs6JRAJ63HdP2eWt7cJgQLf9"
D"X/DnEozl/xnLsQRjCcZyLDb+BZrMT4zJkJKkAAAAAElFTkSuQmCC"
I$=T$:PokeS(@I$,PeekS(@T$),-1,#PB_Ascii):OL=Base64Decoder(@I$,L,@T$,L):If CreateFile(0,F$):WriteData(0,@T$,OL)
CloseFile(0):EndIf:EndIf