• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB 2008: Do Whie...Loop文について)

VB 2008: Do While...Loop文について

このQ&Aのポイント
  • VB 2008のDo While...Loop文についての質問です。
  • 質問者は、特定のファイルから文字を取得するための関数について説明しています。
  • 質問者が悩んでいるのは、Do While...Loop文内のIf Else End Ifの扱いについてで、助言を求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

Do While (i + j <= l) And (i <= p) ... Loop ってことですか?

noname#140971
質問者

お礼

Function FileGetChar4(ByVal f As String, ByVal p As Integer) As String   Dim i As Integer = 1   Dim j As Integer = 0   Dim l As Integer   Dim n As Integer = FreeFile()   Dim c As Char   If File.Exists(f) Then     FileOpen(n, f, OpenMode.Random, OpenAccess.Read, , 1)     l = FileLen(f)     Do While (i + j <= l) And (i <= p)       c = ""       FileGet(n, c, i + j)       j = j - (Math.Abs(Asc(c)) > 255)       i = i + 1     Loop     FileClose(n)   End If   Return c End Function これで正常に動作しないので困っています。

その他の回答 (1)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

あ、もひとつ。 > c = "" はFileGet()の前に移動してください。

noname#140971
質問者

お礼

Function FileGetChar4(ByVal f As String, ByVal p As Integer) As String   Dim i As Integer = 1   Dim j As Integer = 0   Dim l As Integer   Dim n As Integer = FreeFile()   Dim c As Char   If File.Exists(f) Then     FileOpen(n, f, OpenMode.Random, OpenAccess.Read, , 1)     l = FileLen(f)     Do While (i + j <= l) And (i <= p)       FileGet(n, c, i + j)       j = j - (Math.Abs(Asc(c)) > 255)       i = i + 1     Loop     FileClose(n)   End If   Return IIf(p > i, "", c) End Function Do...Loop文の条件に問題があるとばっかり思い込んでいました。 要は、Return文で工夫すべき問題でした。 ともかく、回答を読んで再度テストする中で解決しました。 ありがとうございました。 これで、3、4時間も悪戦苦闘するとは我ながら情けない限りです。

関連するQ&A