by MML » 2006年10月06日(金) 10:09
> String型は、一度に大量に(100個とか)使おうとすると、なぜかうまく行きにくくなります。
> その為、僕はByteptr型の配列を使って対応しています。
>
>
コード: 全て選択
Dim A$ As String,B(1000) As BytePtr
> Dim i As Long
>
> '略
>
> Get #1,,A$
> Cpy(B(i),A$)
>
> '略
>
> Ret(A$,B(i))
> Put #2,,A$
>
> '略
>
> Sub Cpy(ByRef Dest As BytePtr,Src As String)
> If Dest<>0 then free(Dest)
> Dest=calloc(Len(Src)+1)
> memcpy(Dest,StrPtr(Src),Len(Src))
> End Sub
>
> Sub Ret(ByRef Dest As String,Src As BytePtr)
> If Src=0 then Exit Sub
> Dest=MakeStr(Src)
> End Sub
> といった具合に。
>
> ただし、コードは今此処で打った物なので正しいかどうか解りません。十分なデバッグをお願いします。
ありがとうございます。
よくわかりました。
> String型は、一度に大量に(100個とか)使おうとすると、なぜかうまく行きにくくなります。
> その為、僕はByteptr型の配列を使って対応しています。
>
> [code]Dim A$ As String,B(1000) As BytePtr
> Dim i As Long
>
> '略
>
> Get #1,,A$
> Cpy(B(i),A$)
>
> '略
>
> Ret(A$,B(i))
> Put #2,,A$
>
> '略
>
> Sub Cpy(ByRef Dest As BytePtr,Src As String)
> If Dest<>0 then free(Dest)
> Dest=calloc(Len(Src)+1)
> memcpy(Dest,StrPtr(Src),Len(Src))
> End Sub
>
> Sub Ret(ByRef Dest As String,Src As BytePtr)
> If Src=0 then Exit Sub
> Dest=MakeStr(Src)
> End Sub[/code]
> といった具合に。
>
> ただし、コードは今此処で打った物なので正しいかどうか解りません。十分なデバッグをお願いします。
ありがとうございます。
よくわかりました。