by konisi » 2007年8月24日(金) 23:34
#私は上のゲストさんとは別人ですが
このようなコードでどうでしょうか?
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
Dim AddressPoint(9) As *Byte
Dim NowPointingAddressPoint As Long
'第一引数に、保存するアドレス名へのポインタを渡す。
Sub PushNewAddress(Addr As *Byte)
If NowPointingAddressPoint = 10 then
free(AddressPoint(0))
Dim i As Long
For i=0 To 8
AddressPoint(i)=AddressPoint(i + 1)
Next i
AddressPoint(9)=calloc(lstrlen(Addr))
memcpy(AddressPoint(9),Addr,lstrlen(Addr))
Else
Dim npap As Long
npap = NowPointingAddressPoint
If AddressPoint(npap) then
Dim i As Long
For i = npap To 9
If AddressPoint(npap) then
free(AddressPoint(npap))
AddressPoint(npap) = 0
End If
Next i
End If
AddressPoint(npap) = calloc(lstrlen(Addr) + 1)
memcpy(AddressPoint(npap),Addr,lstrlen(Addr))
NowPointingAddressPoint ++
End If
End Sub
'引数なし。
'戻り値は、エラーなら0、エラーで無いならアドレス名へのポインタ。
Function GoAddress() As *Byte
If NowPointingAddressPoint = 10 then
GoAddress = 0
Exit Function
End If
Dim npap As Long
npap = NowPointingAddressPoint
If AddressPoint(npap) = 0 then
GoAddress = 0
Exit Function
Else
GoAddress = AddressPoint(npap)
NowPointingAddressPoint ++
Exit Function
End If
End Function
'引数なし。
'戻り値は、エラーなら0、エラーで無いならアドレス名へのポインタ。
Function BackAddress() As *Char
If NowPointingAddressPoint = 0 then
BackAddress = 0
Exit Function
End If
NowPointingAddressPoint --
BackAddress = AddressPoint(NowPointingAddressPoint)
Exit Function
End Function
今適当に考えながら打ったので、どこかにバグがあるかもしれません。また、上手く動かないかもしれません。ご了承ください。
#私は上のゲストさんとは別人ですが
このようなコードでどうでしょうか?
[hide][code]Dim AddressPoint(9) As *Byte
Dim NowPointingAddressPoint As Long
'第一引数に、保存するアドレス名へのポインタを渡す。
Sub PushNewAddress(Addr As *Byte)
If NowPointingAddressPoint = 10 then
free(AddressPoint(0))
Dim i As Long
For i=0 To 8
AddressPoint(i)=AddressPoint(i + 1)
Next i
AddressPoint(9)=calloc(lstrlen(Addr))
memcpy(AddressPoint(9),Addr,lstrlen(Addr))
Else
Dim npap As Long
npap = NowPointingAddressPoint
If AddressPoint(npap) then
Dim i As Long
For i = npap To 9
If AddressPoint(npap) then
free(AddressPoint(npap))
AddressPoint(npap) = 0
End If
Next i
End If
AddressPoint(npap) = calloc(lstrlen(Addr) + 1)
memcpy(AddressPoint(npap),Addr,lstrlen(Addr))
NowPointingAddressPoint ++
End If
End Sub
'引数なし。
'戻り値は、エラーなら0、エラーで無いならアドレス名へのポインタ。
Function GoAddress() As *Byte
If NowPointingAddressPoint = 10 then
GoAddress = 0
Exit Function
End If
Dim npap As Long
npap = NowPointingAddressPoint
If AddressPoint(npap) = 0 then
GoAddress = 0
Exit Function
Else
GoAddress = AddressPoint(npap)
NowPointingAddressPoint ++
Exit Function
End If
End Function
'引数なし。
'戻り値は、エラーなら0、エラーで無いならアドレス名へのポインタ。
Function BackAddress() As *Char
If NowPointingAddressPoint = 0 then
BackAddress = 0
Exit Function
End If
NowPointingAddressPoint --
BackAddress = AddressPoint(NowPointingAddressPoint)
Exit Function
End Function[/code][/hide]
今適当に考えながら打ったので、どこかにバグがあるかもしれません。また、上手く動かないかもしれません。ご了承ください。