Create DataSection from File
Verfasst: 19.12.2015 22:45
Ich hab eine einfache Möglichkeit gefunden, wie man bei Beispiele externe Daten (bspw. Bilder) in den Quellcode einbinden kann. Das erhöht doch die Übersicht in CodeArchiv, wenn die Beispiele so eingebunden werden.
einfach eine Datei auswählen und es wird automatisch eine .pbi in gleichen Verzeichnis/name erstellt, die die Daten enthalten.
Wenn mehrere Dateien ausgewählt werden, wird nur eine .pbi erstellt, die alle Dateien beinhaltet.
Das Ergebnis würde bspw. so aussehen:
einfach eine Datei auswählen und es wird automatisch eine .pbi in gleichen Verzeichnis/name erstellt, die die Daten enthalten.
Wenn mehrere Dateien ausgewählt werden, wird nur eine .pbi erstellt, die alle Dateien beinhaltet.
Code: Alles auswählen
; Description: Create an DataSection.pbi from a binary file. Multifileselect supported
; Author: GPI
; Date: 19-12-2015
; PB-Version: 5.40
; OS: Windows, Linux, Mac
; English-Forum:
; French-Forum:
; German-Forum:
; -----------------------------------------------------------------------------
EnableExplicit
Procedure.s Simple_Name(a$)
Protected i
Protected b$="Data_"
Protected char
For i=1 To Len(a$)
char=Asc(Mid(a$,i,1))
Select char
Case 'a' To 'z','A' To 'Z', '0' To '9'
b$+Chr(char)
Default
b$+"_"
EndSelect
Next
ProcedureReturn b$
EndProcedure
Procedure WriteMem(out,file.s,*mem,len)
Protected a$,b$
Protected i
Protected limit=80
file=simple_name(GetFilePart(file))
WriteStringN(out,file+"_len:")
WriteStringN(out,"data.i "+Str(len))
WriteString(out,file+":")
For i=0 To len-1 Step 8
If limit>=80
WriteStringN(out,"")
WriteString(out, "Data.q ")
limit=7
Else
WriteString(out,",")
limit+1
EndIf
a$="$"+Hex(PeekQ(*mem+i))
b$=Str(PeekQ(*mem+i))
If Len(a$)<Len(b$)
WriteString(out,a$)
limit+Len(a$)
Else
WriteString(out,b$)
limit+Len(b$)
EndIf
Next
WriteStringN(out,"")
EndProcedure
Define a$
Define file$
Define len
Define *mem
Define in
Define out
file$=GetCurrentDirectory()
Repeat
file$=OpenFileRequester("Create Data pbi",file$,"*.*|*.*",1,#PB_Requester_MultiSelection)
If file$=""
Break
EndIf
out=CreateFile(#PB_Any,file$+".pbi")
If out
WriteStringN(out,"DataSection")
Repeat
len=FileSize(file$)
If len>0
*mem=AllocateMemory(len+8)
If *mem
in=ReadFile(#PB_Any,file$)
If in
ReadData(in,*mem,len)
CloseFile(in)
Else
Debug "Error Read in"
EndIf
writemem(out,file$,*mem,len)
WriteStringN(out,"")
FreeMemory(*mem)
*mem=0
EndIf
EndIf
a$=NextSelectedFileName()
If a$=""
Break
EndIf
file$=a$
ForEver
WriteStringN(out,"EndDataSection")
CloseFile(out)
EndIf
ForEver
Code: Alles auswählen
DataSection
Data_1_ico_len:
Data.i 1150
Data_1_ico:
Data.q $1010000100010000,$468002000010000,$28000000160000,$20000000100000,$2000010000
Data.q 71303168,0,0,0,0,$20001020000,$1050000010400,$204040000000500,256,0,0,0,$1070001040000
Data.q $290000001700,$3A0000003400,$330000003A00,$307130001032600,1280,0,$813000000000000
Data.q $230000000502,$204830000005700,$60DA30108109900,$95000103A101,$4D0000007C00
Data.q $20309161A00,0,$E1F000000000000,$711350000000805,$67C6D90E37758502,$79DEFC2A7CE1F61F
Data.q $2758F21B5BB5FC28,$71000205CB0A,$40610242800,0,$2247000000000000,$52B73B050F1F040E
Data.q $9DF9FD4081EFE31B,$A8FBFE6FA9FBFE60,$76E9FE5997F7FE6D,$60CC3113D8CFD34,$20F254D1E02
Data.q 0,$3B7C000000000000,$7AE1C31548A20417,$ADFCFE70A1F7FD41,$B0FCFE83B0FCFE81
Data.q $97F2FE7EABFBFE83,$3C89FD2E69D2FE65,33809,0,$3E90000000000000,$86E0FC1E54B64911
Data.q $9BF2FE6A98EDFE54,$9CF4FE6C9CF4FE6B,$95E9FE6B9AF0FE6C,$43A0FE4075D6FE67,$1116418EF011
Data.q 0,$3686000000000000,$72D3FE1A50B18E0B,$7DE1FE457BDCFE3D,$7DE2FE467EE3FE46
Data.q $79D9FE467CDFFE46,$419BFE3167CAFE45,$4A0E3885FD0F,0,$2F77000000000000,$5ABFFE1044A2A208
Data.q $61CDFE255FC8FE22,$62CFFE2662D0FE25,$5EC5FE2661CCFE26,$3A8FFE1B53B7FE25,$5F0F357CFD0B
Data.q 0,$3277000000000000,$69B9FD1C4797890D,$6DC6FE3D6CC1FE3C,$6EC7FE3D6EC8FE3E
Data.q $6BBFFE3E6DC4FE3E,$3380FE3663B2FE3D,$4612367AFC0A,0,$3678000000000000,$82BBFC2447874013
Data.q $86C7FE6385C3FE62,$87C8FE6387C8FE63,$84C1FE6486C6FE64,$2C6DFE5A79B2FE63,$D1D4185EB09
Data.q 0,$498A000000000000,$84B1B41434710226,$9AC9FE8098C5FD6C,$9ACAFE819ACBFE81
Data.q $97C2FE8199C8FE81,$346FFC4C6799FE80,29461,0,0,$3F7514314F880000,$A4C7FD7589B1C522
Data.q $A6CAFE93A6CAFE91,$79A3FE90A2C5FE93,$5B92941E3B72FB64,573,0,0,$6597000000000000
Data.q $4D7F6C264378084B,$5F8DEE4A628FC732,$5184B42F497CE848,$1536C9D4B36,0,0,0,0
Data.q $729F000000000000,$6E9B03506895015B,599,0,0,0,0,0,0,0,0,0,0,$1FF8000000000000
Data.q $3C0000007E00000,$3C0000003C00000,$3C0000007C00000,$3C0000003C00000,$3C0000003C00000
Data.q $7E0000007C00000,$7FFC00000FF00000,$FFFF0000
EndDataSection