コード: 全て選択
Dim lngTable[ELM(6561)] = [ ...(6561個のデータ)... ] As Long
このような大きいデータはリソースに入れたいのですが、ABではカスタムリソースに対応していないので・・・。
WinXP SP2 AB 4.02.01 メモリ 256MB
コード: 全て選択
Declare Function FindResource Lib "kernel32" Alias "FindResourceA" (hInstance As HINSTANCE,lpName As BytePtr,lpType As BytePtr) As HANDLE
Declare Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" (pFileName As BytePtr,bDeleteExistingResources As Long) As Long
Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (hUpdate As DWord,lpType As BytePtr,lpName As BytePtr,wLanguage As DWord,lpData As VoidPtr,cbData As Long) As Long
Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (hUpdate As DWord,fDiscard As Long) As Long
Dim hUpdateFile As DWord
Dim hRsrc[1] As DWord
Dim strExePath As String
Dim Buf As String
Dim i As DWord,FormatedNum As String
Const SFXCount=2
strExePath="..\..\oar32.dll"
hUpdateFile=BeginUpdateResource(strExePath,FALSE)
If hUpdateFile Then
For i=1 To SFXCount
FormatedNum=ZeroString(2)
wsprintf(FormatedNum,"%02d",i)
Open FormatedNum & ".bin" For Input As 1
Field #1,Lof(1)
Get #1,1,Buf
UpdateResource(hUpdateFile,"SFX",i,MAKELANGID(&H11,&H2),Buf,Lof(1))
Close 1
Next
EndUpdateResource(hUpdateFile,0)
End If
コード: 全て選択
Declare Function FindResource Lib "kernel32" Alias "FindResourceA" (hInstance As HINSTANCE,lpName As BytePtr,lpType As BytePtr) As HANDLE
Declare Function LoadResource Lib "kernel32" (hModule As HANDLE,hResInfo As HANDLE) As HGLOBAL
Declare Function FreeResource Lib "kernel32" (hResData As HGLOBAL) As DWord
Declare Function LockResource Lib "kernel32" (hResData As HGLOBAL) As VoidPtr
Declare Function SizeofResource Lib "kernel32" (hModule As HANDLE,hResInfo As HANDLE) As DWord
(変数の宣言などは省略)
Ret=FindResource(hDLL,dwSFXType+1,"SFX")
Ret2=SizeofResource(hDLL,Ret)
Ret=LoadResource(hDLL,Ret)
pSFXRes=LockResource(Ret)
WriteFile(hFile2,pSFXRes,Ret2,VarPtr(Dummy),ByVal NULL) 'SFX部分
Buffer=ZeroString(&H100000)
Do
ReadFile(hFile,Buffer,&H100000,VarPtr(Ret2),ByVal NULL)
WriteFile(hFile2,Buffer,Ret2,VarPtr(Dummy),ByVal NULL)
Loop While Ret=&H100000
FreeResource(Ret)