【VB2005】My.Computer.FileSystem について

このQ&Aのポイント
  • VB2005でファイルを書き込む方法を教えてください。
  • My.Computer.FileSystemを使用してファイルを作成し、データを書き込む方法を知りたいです。
  • ファイルの書き込みと読み込みの両方の方法を学びたいです。
回答を見る
  • ベストアンサー

【VB2005】My.Computer.FileSystem について

My.Computer.FileSystem を使ってファイルを書込みたいと考えてます。 書き込む変数ですが、さきに仮の値を代入します。 Structure gtypSaveData <VBFixedString(32)> Dim strValue1 As String <VBFixedString(32)> Dim strValue2 As String End Structure Dim datData(3, 3) As gtypSaveData Dim intCnt1 as Integer Dim intCnt2 as Integer For intCnt1 = 0 To 3 For intCnt2 = 0 To 3 datData(intCntPage, intCnt).strValue1=intCnt1 datData(intCntPage, intCnt).strValue2=intCnt2 Next intCnt2 Next intCnt1 次は、My.Computer.FileSystem をつかって "c:\datData.dat"の場所に、同名のファイルを作成したいと思ってます。 ファイルの値はdatData()の中身です。 書込み、読込み、両方のパターンの作り方が判りません。 下記のサイトを参考にしても判りませんでした。 【MSDN】ttp://msdn.microsoft.com/ja-jp/library/0b485hf7.aspx 貴重な時間、割いて貰って申し訳ないですが、教えてください。

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

  • ベストアンサー
  • k_sidina
  • ベストアンサー率52% (9/17)
回答No.1

質問者さまは、c:\datData.dat ファイルにどういう形で 保存したいと考えていますか? ・CSV でいれる ・データのみ xml でいれる ・datData() をシリアライズする などなど、いろいろと考えることができると思います。 それにより、実装方法がかわってくると思います。

dizzdive
質問者

補足

自己解決しました。 今回は、シリアライズでの保存になりました。 ワードパットなどで開いて値を手軽に書きかえられるのは 避けたかった為に。 参考にしたURL ttp://hpcgi1.nifty.com/MADIA/vbnet/wwwlng.cgi?print+200705/07050013.txt

関連するQ&A

  • VB6のTYPE文をVB.NETのStructureに変えるとき

    VB6のTYPE文をVB.NETのStructureに変えるとき 下記VB6のコードをVB.NETのStructureに変える場合 Type kouzou1 i As Integer j As Integer a As String * 20 b As String * 50 End Type を下記にしてみたのですが *20,*50のところは、どのように表現するのでしょうか。 Structure kouzou1 Dim i As Integer Dim j As Integer Dim a As String * 20 <- ステートメントの終わりを示してくださいのエラーになる。 Dim b As String * 50 <- ステートメントの終わりを示してくださいのエラーになる。 End Structure お教え下さい。

  • VB2003で レジストリを格納する

    レジストリを格納するために、以下のように宣言し、 Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Integer, ByVal lpSubKey As String, ByVal Reserved As Integer, ByVal lpClass As String, ByVal dwOptions As Integer, ByVal samDesired As Integer, ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, ByRef phkResult As Integer, ByRef lpdwDisposition As Integer) As Integer Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Integer, ByVal lpValueName As String, ByVal Reserved As Integer, ByVal dwType As Integer, ByRef lpData As String, ByVal cbData As Integer) As Integer Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Integer) As Integer 以下のようなコードで、ユーザーエージェントをmozillaからoperaへ(またはoperaからmozilla)書き換えようとしていますが、うまくいきません。 問題点1.同じuser agentの下に”(既定)”が2つできてしまう 問題点2.データが正しく(operaと)書き込まれず、文字化けしたものが書き込まれている。 C言語用のサンプルやVB6.0のサンプルは見ますが、VB2003ではどのように指定するのか、わかりませんでした。 Dim ret As Long Dim hKey As Long, lngDisposition As Long Dim udt As SECURITY_ATTRIBUTES Dim myroot_key As String, mysub_key_user_agent As String, myName As String,StrValue As String myroot_key = &H80000002 '"HKEY_LOCAL_MACHINE" を指定している mysub_key_user_agent ="Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent" myName = "(既定)" strValue="Opera" ret = RegCreateKeyEx(myroot_key, mysub_key_user_agent, 0&, vbNullString, _ 0, &H4 Or &H2, udt, hKey, lngDisposition) If ret = 0 Then ret = RegSetValueEx(hKey, myName, 0, 1, strValue, Len(strValue) + 1) RegCloseKey(hKey)

  • VB6.0 →VB2005 のアップグレードでエラー表示

    VB6.0の標準モジュールでは Private Type typset a As String b As String c As Integer End Type Public make() As typset と記述してエラーもなく正常なのですが、VB2005にアップグレードしたときに、 Option Strict Off Option Explicit On Module Module1 Private Structure typset Dim a As String Dim b As String Dim c As Integer End Structure Public make() As typset←▼エラー▼            End Module 【エラー内容】 'make' は、module 'Module1' をとおして型 'typset' を namespace 'WindowsApplication1' で公開することはできません。 structure部をPublicなどにしてもエラーは消えますが、参照先に影響が出てしまいます。 根本的な解決方法が分かりません。 教えていただけないでしょうか?

  • VB2008: 構造体に関するMSDNの解釈について!

    ' ================== ' 構造体変数の代入 ' ================== Module theTEST   Private Structure TEST4     Dim MembersCount As Integer     Dim Member1 As String     Dim Member2 As String   End Structure   Sub Main()     Dim T4_1 As TEST4     Dim T4_2 As TEST4     T4_1.MembersCount = 1     T4_1.Member1 = "T4_1:Member1"     T4_1.Member2 = "T4_1:Member2"     T4_2 = T4_1     Debug.Print(T4_2.MembersCount.ToString)     Debug.Print(T4_2.Member1)     Debug.Print(T4_2.Member2)   End Sub End Module [イミディエイト ウインドウ] 1 T4_1:Member1 T4_1:Member2 >構造体の要素が文字列型 (String) やオブジェクト型 (Object) などの参照型である場合は、データへのポインタがコピーされます。 (http://msdn.microsoft.com/ja-jp/library/18ytyskd(VS.80).aspx) このMSDNライブラリの説明によると、 [イミディエイト ウインドウ] 0 T4_1:Member1 T4_1:Member2 という結果を得るというのが私の予測。 もしかしたら、MSDNライブラリの説明の舌足らず。 >構造体の要素が値型であらば値がコピーされますが、文字列型 (String) やオブジェクト型 (Object) などの参照型である場合は、データへのポインタがコピーされます。 ということでしょうか?

  • VB.NETで、配列をテーブルに変換する。

    VB.NETで、一次元配列string()にあるデータを、DataTableに変換 したいのですが、「型'String'の値を'System,Data,DataTable'に変換できません。」 と、エラーが発生してしまいます。 s1に、配列データが入っています。 Dim dt As DataTable Dim cnt As Integer Dim i As Integer dt = New DataTable count = s1.Length For i = 0 To cnt - 1 dt = CType(s1(i), DataTable) Next 解決方法が見つからず、行き詰っております。 宜しくお願い致します。

  • vb6のstringについて256文字以上連結

    Dim str as String Dim intloop as Integer For intloop=0 TO 19 str=str+"work joint“+intloop Next intloop 20個分の文字列が連結されません。 どのようにすればよろしいでしょうか?

  • VB2005でのファイル操作について

        Dim filedata As String Dim fileNum As Integer Dim fileName As String Dim i As Integer fileName = "C:\Paradata.txt" fileNum = FreeFile() FileOpen(fileNum, fileName, OpenMode.Output) For i = 0 To 9 filedata = data(i, 0) & "," & data(i, 1)・・・・・ PrintLine(fileNum, filedata) Next FileClose あるボタンを押しますと上記のようにテキストファイルにデータを保存しようとしているのですが、1回目のボタンクリックではエラーが無いのですが2回目以降は"別のプロセスで使用されているため、プロセスはファイル 'C:\Paradata.txt' にアクセスできません。"のエラーが発生してしまいます。いろいろと調べているのですがまだわからないのでどこがおかしいか教えてください。よろしくお願い致します。

  • VB2005 初心者です。

    文書中の番号を振りなおしたいのですが、やり方がよく分かりません。 Dim a As String=textbox1.text Dim b As Integer=a.IndexOf("【作品番号") Dim c As String=a.Substring(b,5) Dim d As Integer=c.Length Do While b <> -1 b=a.Indexof("【作品番号",b+1) d=d+5 Loop Dim f As Integer=Cstr((d-5)/5) Dim g As Integer=0 g=g+1 For h As Integer=1 To f Dim i As String=textbox1.text.Replace("【作品番号","【作品番号" & h & "】") Next 最初のループまでで文章中に【作品番号*】がいくつあるかを調べて、(f回)その回数文だけまたループを回して番号を振りたいのですが、何もおきません。 本当に初心者なので、皆さんが見たらありえない構文かも知れませんが、ご教授願います。。。 ちなみに、作品番号は2桁3桁にもなることもあり、全角の数字にしたいのです。 よろしくお願い致します。

  • VB2005で、Structureの配列を返すプログラムを以下のように書きたい

    VB2005で、Structureの配列を返すプログラムを以下のように書きたいのですが、そもそもVB6しか使ったことが無いもので、以下のような素数の結果を返すこのプログラムの書き方はVB2005らしいでしょうか? Module Module1 Public Structure SosuuStatus Public num As Integer Public status As String End Structure Class Sosuu Function SosuuCheck(ByVal st As Integer, ByVal ed As Integer) As SosuuStatus() Dim i As Integer, j As Integer Dim sosuu(0 To ed - st) As SosuuStatus Dim cnt As Integer = 0 For i = st To ed sosuu(cnt).num = i sosuu(cnt).status = "" '初期化 If 1 = i Then sosuu(cnt).status = "素数ではない" ElseIf 0 = (i Mod 2) Then sosuu(cnt).status = "素数ではない" Else For j = 3 To Math.Sqrt(ed) If 0 = (i / j) Then sosuu(cnt).status = "素数ではない" End If Next j End If If sosuu(cnt).status = "" Then sosuu(cnt).status = "素数である" End If cnt = cnt + 1 Next i SosuuCheck = sosuu End Function End Class End Module

  • 目盛表示ができない(vb2010)

    下記のグラフのように、Y軸に目盛表示をしたいのですが、うまくできません。 PictureBoxにLineは表示できるのですが、目盛が表示できません。 どなたかお教え願います。 下記のコードでは、目盛表示ができないのでしょうか。    '目盛表示 Dim J As Integer, CurrentY As Integer, CurrentX As Integer Dim strB As String J = 0 For I = 0 To 200 Step 40 CurrentX = 120 CurrentY = 100 + I strB = CStr(0.2 - (2 / 5) * J * 0.1) J = J + 1 Next J = 0 For I = 0 To 200 Step 40 CurrentX = 120 CurrentY = 300 + I strB = CStr(0 - (2 / 5) * J * 0.1) J = J + 1 Next

専門家に質問してみよう