テキストボックスに書き出した内容をテキストファイルに書き出すのに、最後に「保存」ボタンを作りまとめて行っていますが、これを、テキストボックスに内容を入力し始めたらそのままテキストファイルとして保存されるとともに、どんどん追加書き出しされるような方法はありませんか?
多分Keydownとかを使うのでは、と思うのですが、やり方が全然分かりません。どなたか教えてください!!!よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

テキストボックスに追加された文字に対する操作は、変数やファイルというものの構造上好ましくないですね。


また、BackSpaceやDeleteキーで消されたときにも対応できません。
TAGOSAKU7さまのコードのように、内容が変更されたら、テキストファイルのすべてを書きなおすという方法をとるのが理想です。
しかし、この方法では内容が長くなってきたときに、1文字1文字入力するたびに、ディスクアクセスが発生することになり、文字を打っている人にストレスを与えてしまいます。

ということで最後に文字を入力してからおよそ3秒後にファイルを保存するという方法を紹介します。

○ フォームにテキストボックスを貼り付け、MultiLineプロパティをTrueにする。
○ フォームにタイマーコントロールを貼り付け、Intervalプロパティを1000にして、EnabledプロパティをFalseにする。

○ 次のコードをフォームのコードに貼り付ける。

Const TEST_FILE = "c:\test.txt"
Const N_SEC = 3

Private Sub Text1_Change()

Timer1.Enabled = True

End Sub

Private Sub Timer1_Timer()

On Error Resume Next

Static Cnt As Long
Dim strText As String
Dim lngFile As Long

Cnt = Cnt + 1

If Cnt = N_SEC Then

Timer1.Enabled = False
Cnt = 0
Kill TEST_FILE
strText = Me.Text1.Text
lngFile = FreeFile
Open TEST_FILE For Binary Access Write As #lngFile
Put #lngFile, , strText
Close #lngFile

End If

End Sub

-------------------

ってな感じでどうでしょう。
真中ら辺はTAGOSAKU7さまのコピーです。
ちなみに
Const N_SEC = 3
の3を変えれば何秒後でもできます。
    • good
    • 0
この回答へのお礼

なるほど。そういう方法もあるんですね。Timerっていうのは思いつきませんでした。目からうろこです。ありがとうございます!

お礼日時:2002/01/22 21:01

キーダウン、キープレスだと、マウス操作による変更が反応しません。


リアルタイムということなら、チェンジイベントを使用しましょう。

サンプルは、テキストボックスのMultiLineをTrueにして使用した方が、見栄えがいいかも?

Private Sub Text1_Change()
  Const TEST_FILE = "c:\test.txt"
  
  Dim strText As String
  Dim lngFile As Long
  
  strText = Me.Text1.Text
  
  lngFile = FreeFile
  Open TEST_FILE For Binary Access Write As #lngFile
    Put #lngFile, , strText
  Close #lngFile
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます!Text1_Changeって全然知りませんでした。なるほど、テキストを更新する度にそういうイベントが発生しているわけですね。試してみます。

お礼日時:2002/01/22 21:03

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qリアルタイムとは?

よくゲームソフトやハードで、「リアルタイムに処理ができる」又は「リアルタイムムービー」とか言うのをよく聞くのですが、
この「リアルタイム」って何なんでしょうか?ご存じの方がいましたら、よろしくお願いします。

Aベストアンサー

> PS3に関する記事に「ほとんどがリアルタイム演算で動いていた」とあるのですが、これはどうゆうことなんでしょうか?

ムービー再生の手法を使わずに綺麗な3DCGのアニメーションが表示できるほど、グラフィック機能が高性能だって意味です。

同等のムービーを表示するだけなら、そのPS3の再生動画を録画して持ってくれば、PS2でも同じ動画を見ることが出来ますが、
「もうちょっとキャラクタを増やしたい」
「反対側から見た絵にしたい」
という事は元のPS3のリアルタイム処理の方でなければ出来ません。

Qリストボックスの内容をテキストボックスに表示する。

タイトルどおりなんですが、リストボックスの内容をテキストボックスに表示することが出来ません。
といっても、普通に表示することは出来たのですが、
今やっていることは、テキストボックスの中にある文章を表示しておいてカーソルがある部分にリストボックスの内容を表示する。。というものです。

(例)
テキストボックスの中身が
「おはようございます。今日の天気はです。」
リストボックスの中身が
晴れ・曇り・雨
このとき「~天気は(ここにカーソルがある)です」
あるボタンを押すことで(ダブルクリックでもどちらでも良い)
テキストボックスの内容が
「~天気は晴れ(リストボックスで選択したアイテム)です。」

と表示できるようにしたいのです。どうしても文末にしか表示することが出来ませんでした。長文で分かりづらい点が多々あると思いますが、
良い方法があれば教えてください。

Aベストアンサー

カーソルの位置は、テキストボックスのSelStartプロパティで取得することができますので、その値を元に、LeftやMid関数で文字を切り貼りしてください。

QリアルタイムOSにおける「静的なタスク生成」とは?

リアルタイムOSの特徴である「タスクの静的な生成」とはどういう意味でしょうか。
コンパイル時にタスクを生成することだそうですが、

・「コンパイル時にタスクを生成」とは?
・汎用OSにおけるタスク生成と、どのように違うのか?
・そもそも「タスク生成」とは?

静的というと、「動かない=あらかじめ決められている」というイメージを持っていますが、正しいでしょうか。
ご教示お願いいたします。

Aベストアンサー

貴殿の理解でおおよそ間違っていません。

RTOSの資源の少ない環境においては、タスクは、起動時点で
生成済みで、削除されない作りをすることが多いためです。
ですので、起動されてから生成済みのタスクを起動したり、停止したり
制御をします。

以下、μITRON4.0の場合について回答します。
・「コンパイル時にタスクを生成」とは?
--> 実際には、カーネル起動時にタスクが起動するまでの間に
  タスクを生成します。 どんなタスク生成するするかは、
  実行時には、ROMテーブルなどに出力されているデータに基づいて
  生成されます。そのROMテーブルは、コンパイル前に
  変なテキストファイルに定義を書いてそれをコンフュギュレータ
  と呼ばれる専用ツールを使って、コンパイルできる言語に変換します。
  μITRONによっても方言があって、変なテキストファイルではなく、
  直接C言語でROMテーブルなどを定義するものもあります。Nortiという
  RTOSはそうなっています。
・汎用OSにおけるタスク生成と、どのように違うのか?
--> 利用するメモリとCPU負荷が少なくて済みます。
  静的生成の反対の動的生成では、ヒープメモリ等の獲得が必要に
  なります。汎用OSではMMUが搭載されている場合が多く、メモリを
  効率的に使えますが、RTOSではそれがなく、メモリが非効率になります。
  また、生成時のエラーチェックは、動的生成ではシステム起動時ですが、
  静的生成では、コンパイルまでにエラーチェックされていますので
  実行時はエラー処理をかなり省くことができます。

・そもそも「タスク生成」とは?
--> タスクを実行するためのタスク固有のワークエリアを確保して
  起動をかければ実行できる状態にすること

静的というと、「動かない=あらかじめ決められている」というイメージを持っていますが、正しいでしょうか。
--> そうです。変なテキストファイルであらかじめ決めておきます。

貴殿の理解でおおよそ間違っていません。

RTOSの資源の少ない環境においては、タスクは、起動時点で
生成済みで、削除されない作りをすることが多いためです。
ですので、起動されてから生成済みのタスクを起動したり、停止したり
制御をします。

以下、μITRON4.0の場合について回答します。
・「コンパイル時にタスクを生成」とは?
--> 実際には、カーネル起動時にタスクが起動するまでの間に
  タスクを生成します。 どんなタスク生成するするかは、
  実行時には、ROMテーブルなどに出力さ...続きを読む

Qリッチテキストボックスとテキストボックスの違い

VB6のリッチテキストボックスとテキストボックス
の違いは何なんでしょうか?

Aベストアンサー

RichTextだと扱えるファイルサイズが大きくなり
プロパティの指定が可能になります。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformsrichtextboxclasstopic.asp

QAu製iPhoneのリアルタイム受信とは

素人みたいな質問をしますが教えてください。

質問1
Au製iPhoneのリアルタイム受信とはなんでしょうか?
ソフトバンクのiPhoneにもそのような機能はありますか?

質問2
フェッチ式、プッシュ式についてお尋ねします。
私から知人のソフトバンクiPhoneのメールアドレス「@i.softbank.jp」へ送るとすぐに「メッセージを受信しました」「You got a mail」とiPhoneに表示されました。
私はてっきりソフトバンクのメールがなにもしないのに受信が自動でされたのでプッシュ式と思っていましたが、知人がソフトバンクメールはフェッチ式だよと教えてくれました。
ソフトバンクメールとはフェッチ式ですか?
私はフェッチ式、プッシュ式の違いが分かっているようで、分かっていません。
簡単に解説してくださる方がいたらよろしくお願いします。

ちなみにAuのメール、yahooメール(@yahoo.co.jp)、Gメール(@gmail.com)はどちらになりますか?
どこでどう判断すればいいのでしょうか?


それぐらい調べろよと言わずどうぞ、よろしくお願いします。

素人みたいな質問をしますが教えてください。

質問1
Au製iPhoneのリアルタイム受信とはなんでしょうか?
ソフトバンクのiPhoneにもそのような機能はありますか?

質問2
フェッチ式、プッシュ式についてお尋ねします。
私から知人のソフトバンクiPhoneのメールアドレス「@i.softbank.jp」へ送るとすぐに「メッセージを受信しました」「You got a mail」とiPhoneに表示されました。
私はてっきりソフトバンクのメールがなにもしないのに受信が自動でされたのでプッシュ式と思っていましたが、知人がソフトバンク...続きを読む

Aベストアンサー

auはiPhoneを作っていませんけどね。
auもSoftBankもiPhoneはApple製
まぁそんな細かなツッコミは置いといて。

1.これまでau版では未対応だったのが3月中旬から携帯のメールのように送られてきたものが直ぐに届くようになったのです。
SoftBank版は既に対応していました。

2.SoftBank版は既に1.で回答した通り。
プッシュはメールがServerに届くと直ぐに送られてきますが、フェッチは一定時間ごとにServerに読みに行く方式です。
iPhoneの場合は最短で15分です。
メールによってプッシュが使えるものと使えないものがあります。
確認方法は「設定」→「メール/連絡先/カレンダー」→「データの取得方法」→「詳細」で出来ます。
因にSoftBank版の「@i,softbank.jp」はフェッチです。

>ちなみにAuのメール、yahooメール(@yahoo.co.jp)、Gメール(@gmail.com)はどちらになりますか?

どちらも違います。
勿論SoftBank版でも違います。
これらはYahoo!やGoogleが提供しているサービスです。

最後に。
>それぐらい調べろよと言わずどうぞ、よろしくお願いします。

そう言いたいのですけどね。
あなたの質問に既に検索すれば直ぐに解るキーワードがあります。
「au iPhone メールリアルタイム受信」
「メール プッシュ式」
「プッシュ型メール」
「メール フェッチ」
試しにこれらで検索してみてください。

用語が解らない程度なら検索を利用すればここで質問して回答を待つより遥かに早く情報を得る事が出来ます。
折角インターネットを利用しているのですから何か解らない事があれば使わない理由はありません。
と言うか何の為にインターネットを使っているのかと言うことになります。

auはiPhoneを作っていませんけどね。
auもSoftBankもiPhoneはApple製
まぁそんな細かなツッコミは置いといて。

1.これまでau版では未対応だったのが3月中旬から携帯のメールのように送られてきたものが直ぐに届くようになったのです。
SoftBank版は既に対応していました。

2.SoftBank版は既に1.で回答した通り。
プッシュはメールがServerに届くと直ぐに送られてきますが、フェッチは一定時間ごとにServerに読みに行く方式です。
iPhoneの場合は最短で15分です。
メールによってプッシュが使えるものと使えない...続きを読む

Qリストボックスの全ての内容をテキストボックスに表示するには?

VB2005初心者です。
ボタン1を押した時にリストボックス1の全ての内容をテキストボックス1に表示さるにはどのようにすればいいのでしょうか?
ネットで調べているのですが見つかりません・・。
どうぞよろしくお願いします。

Aベストアンサー

リストボックスの項目は Itemsプロパティで参照可能ですよ

データの取得イベントで
dim sb as new System.Text.StringBuilder
for n as integr = 0 to ListBox1.Items
  sb.append( ListBox1.Items(n).toString)
  sb.Append( vbcrlf )
next
TextBox1.Multiline = true
TextBox1.ScrollBars =ScrollBars.Vertical
TextBox1.Text = sb.toString
といった具合です

Q「リアルタイム」とはなんぞ?

タイトルの通りです。
女子中高生の7割ぐらいが使用してると聞いた
「何か」みたいなのですが

Aベストアンサー

「リアルタイム日記」

というものが流行っているみたいですね・_・
ブログよりも短い書き込みで、より気軽に書き込めるみたいです。

参考URL:http://itpro.nikkeibp.co.jp/article/COLUMN/20070803/278996/?P=2

Qテキストボックスの内容(複数行)をリストへ

テキストボックスの内容(複数行)をリストボックスへ1行表示にするにはどうすれば良いのでしょうか?
replaceにてvbcrlf(改行文字?)を置き換えしようとしても無理でした。

ご教授お願いします。

Aベストアンサー

TextBox1はMultiLineをTrueにしました。
List1を貼りつけました。
ボタンを1つ貼りつけました。
Private Sub Command1_Click()
s = Text1.Text
s1 = Replace(s, vbCrLf, "")
MsgBox s1
List1.AddItem s1
End Sub

テキストボックスでエンタキーで改行する方法で
例えば4行を入力し、ボタンをクリックすると、リストボックスには、1行の表示になりましたが。
そうならなかったのはなぜでしょうね。

Qジャパンネットバンクと楽天銀行間の送金は24時間リアルタイムですか?

ジャパンネットバンクと楽天銀行間の送金は24時間リアルタイムですか?

ジャパンネットバンクを開設手続き中です。
楽天銀行間での送金は、リアルタイムなんでしょうか?
真夜中でも土日でも、リアルタイムに送金が行われるのでしょうか?
そうでなければ、両方の口座を作らないといけないので不便です。

Aベストアンサー

>ジャパンネット銀行と楽天銀行の間での送金は、リアルタイムなんでしょうか?
>真夜中でも土日でも、リアルタイムに送金が行われるのでしょうか?

同じネット銀行ではありますが、別の銀行ですからリアルタイムではありません。


「24時間いつでもリアルタイムで送金」
これは自社システムの中で振込が完了する、同行口座同士だから成り立つのです。

例えば。
・ジャパンネット銀行口座⇔ジャパンネット銀行口座
・楽天銀行口座⇔楽天銀行口座
・住信SBIネット銀行口座⇔住信SBIネット銀行口座
・ゆうちょ銀行口座⇔ゆうちょ銀行口座

ネット銀行系は24時間稼動・対応で、自社システム内で処理が完結するからです。
ゆうちょは独自システムなんで、自社口座間送金は24時間対応となっています。

ただし「他行あて振込」は自社システム内だけで処理されません。
他行あて振込システム(全銀システム)に接続しデータのやりとりが必要で、
「他行あて」の場合は全銀システムの接続時間帯だけの反映となります。
時間外は「振込予約」扱いとなり、振込データは留まったままです。
翌営業日に全銀システムと繋がり、そして振込予約分が処理されるのです。

巷の普通銀行は、24時間システム稼動のところもあり入出金などは出来ますが、
振込システムは未対応のために、自社内振込であってもリアルタイムでありません。

>ジャパンネット銀行と楽天銀行の間での送金は、リアルタイムなんでしょうか?
>真夜中でも土日でも、リアルタイムに送金が行われるのでしょうか?

同じネット銀行ではありますが、別の銀行ですからリアルタイムではありません。


「24時間いつでもリアルタイムで送金」
これは自社システムの中で振込が完了する、同行口座同士だから成り立つのです。

例えば。
・ジャパンネット銀行口座⇔ジャパンネット銀行口座
・楽天銀行口座⇔楽天銀行口座
・住信SBIネット銀行口座⇔住信SBIネット銀行口座
・ゆうちょ銀行...続きを読む

Qテキストボックスの内容をOutlook Expressの新規作成に貼り付ける方法は?

テキストボックスに入力されたデータをコマンドボタンクリック一発でOutlook Expressの新規作成メールの本文部分にコピーする方法はありますか?また、入力した宛先アドレスを同じようにOutlook Expressの新規メールの宛先部分に貼り付ける方法もあるのでしょうか?教えてください!!!

Aベストアンサー

>Outlook Expressの新規作成メールの本文部分
Outlook Express限定とするわけではないですが・・・

各ユーザー毎に使用するメーラーは違うはずです。
サンプルはそれぞれの環境で、標準で使用するメーラーを
※メルアド
※タイトル
※本文
を入力された状態で起動します。

標準で使用するメーラーは、
[インターネットのプロパティ]→[プログラム]→[電子メール]項目にて設定します。
この項目はレジストリの
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto\shell\open\command
に登録されています。
どうしても「Outlook Express限定」とするのであれば、ここの情報をPGで変更してあげる必要があります。
レジストリ操作については参考URLを見てください。

Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Const SW_SHOWNORMAL = 1

Private Sub Command1_Click()
  Dim lngSts As Long
  
  lngSts = ShellExecute(Me.hwnd, "open", _
           "mailto:****@hoge.com?subject=(゜ .゜)ノ ヤホ&body=(-ロ-; グハッ", _
           vbNullChar, vbNullChar, SW_SHOWNORMAL)
End Sub

参考URL:http://www.vbvbvb.com/jp/gtips/index0251.html

>Outlook Expressの新規作成メールの本文部分
Outlook Express限定とするわけではないですが・・・

各ユーザー毎に使用するメーラーは違うはずです。
サンプルはそれぞれの環境で、標準で使用するメーラーを
※メルアド
※タイトル
※本文
を入力された状態で起動します。

標準で使用するメーラーは、
[インターネットのプロパティ]→[プログラム]→[電子メール]項目にて設定します。
この項目はレジストリの
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mailto\shell\open\command
に登録されています。
ど...続きを読む


人気Q&Aランキング