[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/03/06(Tue) 11:14
投稿者名:たろ〜
Eメール:
URL :
タイトル:
byt配列を空にするには?
ご教授よろしくお願いします。
プロシージャーの中にDim bytA() As Byteと言う変数があり
呼ばれるたびにbytAに格納されます。
前回呼ばれた時より長い文字列を格納する時は問題ないのですが
短い文字列の場合、配列内に前回分が残っており困っております。
空にするにはどのようにすればよいでしょうか?

初歩的なことですいません。
よろしくお願いします。

投稿時間:2007/03/06(Tue) 11:15
投稿者名:ささき
Eメール:
URL :
タイトル:
Re: byt配列を空にするには?
> ご教授よろしくお願いします。
> プロシージャーの中にDim bytA() As Byteと言う変数があり

Erase bytA

では、駄目でしょうか?

投稿時間:2007/03/06(Tue) 12:24
投稿者名:たろ〜
Eメール:
URL :
タイトル:
Re^2: byt配列を空にするには?
ささき 様

> Erase bytA
ありがとうございました。
勉強になりました。

投稿時間:2007/03/06(Tue) 11:50
投稿者名:大吉末吉
Eメール:
URL :
タイトル:
Re: byt配列を空にするには?
状況が良く分からないのですが・・・

> プロシージャーの中にDim bytA() As Byteと言う変数があり
> 呼ばれるたびにbytAに格納されます。

「プロシージャ内で宣言したローカル変数」って事なんですよね?

だとすると、「プロシージャが呼び出される」たびに、自動的に初期化されるはずですので、

> 前回呼ばれた時より長い文字列を格納する時は問題ないのですが
> 短い文字列の場合、配列内に前回分が残っており困っております。

こうはならないと思いますけど・・・

具体的にどういうコードなんでしょう?

投稿時間:2007/03/06(Tue) 12:11
投稿者名:ささき
Eメール:
URL :
タイトル:
Re^2: byt配列を空にするには?
> 具体的にどういうコードなんでしょう?

Dim bytA() As Byte

Public Sub hogehoge
   '呼ばれるたびにbytAに格納
End Sub

Public Sub hogehoge2
  ’ここから関数hogehogeを呼んでいる。
End Sub

とやっているのじゃないかなぁ〜。
と勝手予測

投稿時間:2007/03/06(Tue) 12:35
投稿者名:たろ〜
Eメール:
URL :
タイトル:
Re^2: byt配列を空にするには?
大吉末吉 様

> 「プロシージャ内で宣言したローカル変数」って事なんですよね?
>
> だとすると、「プロシージャが呼び出される」たびに、自動的に初期化されるはずですので、
>
ご推察の通りで違う箇所でした(^^;;;

  Dim lngFileNo As Long
  lngFileNo = FreeFile
  Open strFilePath2 For Binary As #lngFileNo
  Put #lngFileNo, , bytA
  Close #lngFileNo

さらに質問です。よろしくお願いします。
strFilePath2で示したファイルを削除してあげると
上手く更新するのですが・・・
Putは毎回上書きしてくれないのでしょうか?
また、いちいちファイルを削除しなくても良い方法は
あるのでしょうか?

投稿時間:2007/03/06(Tue) 12:41
投稿者名:ささき
Eメール:
URL :
タイトル:
Re^3: byt配列を空にするには?
if Dir(strFilePath2) <> vbNullstring Then
    SetAttr strFilePath2, vbNormal
    Kill strFilePath2
End if
Open strFilePath2 For Binary As #lngFileNo
(以下略)

っとしてみるとか?

投稿時間:2007/03/06(Tue) 13:58
投稿者名:たろ〜
Eメール:
URL :
タイトル:
Re^4: byt配列を空にするには?
ささき様
>     Kill strFilePath2

やはり削除なんですね。
ありがとうございます。

投稿時間:2007/03/06(Tue) 13:40
投稿者名:大吉末吉
Eメール:
URL :
タイトル:
Re^3: byt配列を空にするには?
> ご推察の通りで違う箇所でした(^^;;;

そうですか・・・

>   Dim lngFileNo As Long
>   lngFileNo = FreeFile
>   Open strFilePath2 For Binary As #lngFileNo
>   Put #lngFileNo, , bytA
>   Close #lngFileNo
>
> さらに質問です。よろしくお願いします。
> strFilePath2で示したファイルを削除してあげると
> 上手く更新するのですが・・・
> Putは毎回上書きしてくれないのでしょうか?

「上手く」とか「上書き」とか・・・どう言う状態の事??


「Binaryモード」は「バイト単位で上書き」しますから、「書き込まない場所」はそのまま残りますけど・・・
#配列と同じです。ファイルサイズが縮んだりはしません。


って事でいいのかな・・・

投稿時間:2007/03/06(Tue) 14:03
投稿者名:たろ〜
Eメール:
URL :
タイトル:
Re^4: byt配列を空にするには?
大吉末吉様

> 「上手く」とか「上書き」とか・・・どう言う状態の事??

言葉足らずですいません。
毎回ファイルを更新するロジックとして使っているものでして(^^;;;

> 『
> 「Binaryモード」は「バイト単位で上書き」しますから、「書き込まない場所」はそのまま残りますけど・・・
> #配列と同じです。ファイルサイズが縮んだりはしません。
> 』

なるほど・・・
よくわかりました。
勉強になりました。またよろしくお願いします。