グローバル変数に文字列を戻す


斉藤  2007-05-24 22:53:00  No: 136493

お世話になります。
.net初心者で、現在ファイル操作の勉強をしています。

そこでわからない点がありますのでお助けすださい。

グローバル変数に文字列を代入して、テキストファイルに保存しました。
そして読み込んだら、その文字列が、グローバル変数に代入される、という動きがほしいのですがやり方がわかりません。
色々調べたのですが、納得のできるサンプル等がありませんでしたので今回お助けを求めました。
よろしくお願いします。


  2007-05-25 00:34:26  No: 136494

グローバル変数に文字列を代入      gString = 適当な文字列
テキストファイルに文字列を書込む  StreamWriter.Write(gString)

テキストファイルから文字列を読込む  gString = StreamReader.ReadToEnd

VBレスキュー(花ちゃん)様Tips参照  
ttp://hanatyan.sakura.ne.jp/index.html


あいうえお  2007-05-25 04:37:11  No: 136495

ついでに参考になりましたw


斉藤  2007-05-26 01:14:14  No: 136496

わからない所なんですが、FORMで

[フォームでグローバル変数に代入した文字列をテキストファイルに保存して終了。

次に、読み込んだら今度は逆に文字列がグローバル変数に代入されて、別フォームのTextBoxなどにも文字が入っている状態にする。]

 

という動きをさせたいのですができません。

保存することはできたのですが、読み込んだときに、グローバル変数の中に、グローバル変数として保存したはずの文字が代入されません。


特攻隊長まるるう  2007-05-26 02:37:00  No: 136497

ファイルから読み込めていないか、
グローバル変数に代入できていないか、
くらいしか原因が考えられませんが。。。

デバッグした結果は?どのコードまで成功しているんです?


斉藤  2007-05-26 02:50:03  No: 136498

特攻隊長まるるうさん、お返事ありがとうございます。

'ファイルの読み込み。
        Dim FileName As String
        Dim FileNum As Integer
        Dim DialogRet As Integer
        Dim strBuff As String

        If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
            FileName = OpenFileDialog1.FileName
        Else
            Exit Sub
        End If

        FileNum = FreeFile()
        FileOpen(FileNum, FileName, OpenMode.Input)

        Do Until EOF(FileNum)
            strBuff = LineInput(FileNum)

            glb_A = strBuff.Substring(0, 6)

            glb_B = strBuff.Substring(7, 11)

            glb_C = strBuff.Substring(18, 20)

            glb_D = strBuff.Substring(38)

            lstBettori.Items.Insert(0, strBuff)
        Loop
        FileClose(FileNum)

    End Sub

今は読み込みのときはこういうコードを書いています。
しかしこれだと、見ての通り各グローバル変数には一定の文字位置の文字数しか入らず、指定した文字範囲を超過してしまいますとglb_Aに入れたいものが、glb_Bに超過して入ってしまします。

保存するものによっては文字数が長くなるのものもあるので、それに対応させたいのですが方法がわかりません。


特攻隊長まるるう  2007-05-26 03:39:19  No: 136499

他の掲示板から移動する場合は、両方の掲示板でそれなりの
対応をするのが礼儀だと思いますが。
http://www2.moug.net/bbs/program/20070521000002.htm

それに事実を正確に伝えようとしていませんよね。
>読み込んだときに、グローバル変数の中に、グローバル変数として
>保存したはずの文字が代入されません。
『されません』というのは結果が期待できるコードを書いた上で
言える事で、
>保存するものによっては文字数が長くなるのものもあるので、
>それに対応させたいのですが方法がわかりません。
原因がすでに分かってるのになぜ最初から書かないんですか?
>納得のできるサンプル等がありませんでしたので
回答者にコードを書かせようと考えてるのでしょうか?
…だとしたら上手くいくはずのない考え方ですね。

・十分な長さを文字範囲として指定し、足りない部分を特定の文字で埋める
(例えばスペース)のが固定長の考え方です。
・区切り文字を決めて、その区切り文字ごとに読む(例えばカンマ区切りなら
CSVと呼ばれてよく使われています)という方法もあります。


斉藤  2007-05-29 05:00:39  No: 136500

特攻隊長まるるう様
ご指摘どうもありがとうございました。
以後気をつけさせていただきます。

自分が求めている結果を出すためにはCSVで区切り文字を決めて、その区切り文字ごとに読むことが必要だとわかりました。
しかし、自分のコードのどこを修正したらいいのかがわかりません。

一から書き直したほうがいいのでしょうか??


特攻隊長まるるう  2007-05-29 18:31:25  No: 136501

> 以後気をつけさせていただきます。
以後でなくて今すぐに対応して欲しいんですけど?
[マルチポストについて]
http://www.ippo.ne.jp/g/53.html
> CSVで区切り文字を決めて
理解できてないのか、日本語の使い方が下手なのか、話が噛み合い
ませんね。CSVなら区切り文字は決まってます。カンマ以外に区切り
文字を決めるならCSVとは呼びません。

言われたことを自分で調べなおして確認してないでしょう?
初心者であることは関係ありません。自分で調べて考えて
理解しないとプログラムは作成できません。

前の掲示板の書き込みも含めて、既に十分な量のサンプルコードが
示されています。それぞれのプログラムを1行1行丁寧に解析して
ください。
分からないコードはヘルプ(MSDN)で説明を読んでください。
コードを選択した状態で[F1]キーを押せば表示されます。
関連する内容はキーワード検索を活用してください。

同じ目的の関数は、同じクラスにまとめられています。
例えば、文字列編集なら
[String メンバ]
http://msdn2.microsoft.com/ja-jp/library/system.string_members(VS.80).aspx
それぞれのリンク先に簡単な使用例も載っています。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加