トップページ⇒tech
1001コメント307KB

VBプログラマ質問スレ(6.0以前) Part51

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/01/28(日) 10:57:31
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。

○ 質問者の心得
 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
 二.VBScript、インストーラーなどはこのスレでOK。
 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
 四.荒らしは相手しない。

○ 回答者の心得
 一.答えられない質問は無駄に罵倒せずスルー。無理するな。
 二.代用法を強制しない。
 三.回答する上で必須ではない情報をむやみに聞き返さない。
 四.荒らしは相手しない。
 五.VB情報募集中。
 六.回答は質問者が理解できるよう具体的に。

MSDN Online Japan ホーム
 http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6
 http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
 http://www.google.co.jp/

※「まず自分で調べる」クセを身につけよう。
0348デフォルトの名無しさん2007/02/26(月) 22:48:23
MSからアドインでてるから、取得汁。
0349デフォルトの名無しさん2007/02/26(月) 23:14:40
>>348
http://support.microsoft.com/kb/837910/ja にありました。
どうもありがとうございました。これでだいぶ快適になります。
0350デフォルトの名無しさん2007/02/27(火) 00:25:18
OutlookExpressのメール一覧からドラッグされたメールの情報って取得できますか?
一度Explorerにコピーしてからなら普通にファイルとして取得できるのですが、
直接ドラッグして、OLEDragDropイベントで捕まえようとすると
DataオブジェクトのFilesが「データの形式が一致しません。」となってエラーになってしまいます。
0351デフォルトの名無しさん2007/02/27(火) 12:54:10
それよりFontLinkが使いたいな。Courier Newでないと気分が乗らないよw
0352デフォルトの名無しさん2007/02/27(火) 17:12:24
>>323
eval("MsgBox(""Hello"")")
0353デフォルトの名無しさん2007/02/27(火) 22:27:56
148で書かせていただいたのですが149さんに教えていただいてやってみようとしたのですが
よくわかりませんでした
本当に初心者で申し訳ないですがどなたか再度教えていただけますか
0354デフォルトの名無しさん2007/02/27(火) 22:34:42
さようなら
0355デフォルトの名無しさん2007/02/27(火) 22:59:28
質問の意味がわからん。
何のコントロールを使ってどんな動作をさせたいのか具体的に書かないと答えようが無いんだが。
0356デフォルトの名無しさん2007/02/28(水) 00:19:05
コマンドボタンを使って、複数のテキストボックスの値を瞬時に消したいのですが、

Text1.text=""
Text2.text=""
   ・・・
Text20.text=""

のようにいちいち書くのではなく、For文を使って連番で一気に消せません
でしょうか?

For i=1 to 20
hoge="Text"&i
hoge.text=""
Next

とやっても、「オブジェクトが必要です」と警告を食らってしまいます。
どなたかご教示ください。よろしくお願いしまうs。
0357デフォルトの名無しさん2007/02/28(水) 00:22:21
コントロール配列
03583562007/02/28(水) 00:37:11
>>357
ありがとうございました
0359デフォルトの名無しさん2007/02/28(水) 01:58:42
>>352
thx!!!
0360デフォルトの名無しさん2007/02/28(水) 09:38:19
VB5で書かれたソースコードの変更を頼まれたのですが
VB5が手に入りません。

VB5で書かれたソースコードをVB6でコンパイルできますか?
0361デフォルトの名無しさん2007/02/28(水) 10:22:43
>>360
やってから言え
0362デフォルトの名無しさん2007/02/28(水) 12:45:38
>>360
不安なら変更前を別途圧縮するなどして保存しておき、VB6で開いてしまえ
0363デフォルトの名無しさん2007/02/28(水) 13:05:11
つうか、銀行側も良くそんなしようでOKだしたな

もとはといえば作ったり打合せした連中が糞以下だからだろうけど
0364デフォルトの名無しさん2007/02/28(水) 13:21:29
銀行?誤爆?
0365デフォルトの名無しさん2007/02/28(水) 13:23:07
>>364
すまん・・・誤爆だ
スレ汚しスマソ
0366デフォルトの名無しさん2007/02/28(水) 15:38:20
マルチすみません。
情報が少ないですが以下の現象で困っております。
環境 WindowsXP Excel2003

エクセルのVisual Basic Editorで社内作成のコントロール(VB6にて)
をはりつけ、その後エクセルを終了すると必ずメモリがReadに・・・
のエラーがでてしまい困っています。あと2時間ほどで調べないといけない
のですが。。。誰かご教授お願いします。
0367デフォルトの名無しさん2007/02/28(水) 16:09:21
マルチ?
ばいばい、もう来なくて良いよ
0368デフォルトの名無しさん2007/02/28(水) 16:12:39
はっきりは判らないが、そのコントロール自体を破棄する前に
コントロール内で使用しているオブジェクトを明示的に破棄してやる
必要があるのではないか。
0369デフォルトの名無しさん2007/02/28(水) 16:51:18
趣味レベルなのでかなり初歩的な質問で申し訳ないのですが
VB6でMicrosoft flex Grid Contorol 6.0
を使って FlexGridを作ったのは良いのですが
これを使ったプログラムはexeファイル化しても
VB6がインストールされてない環境では使えないのでしょうか?
知り合いのPC上でも使いたいのですが(Win XPと2000)
VisualStudioをそれぞれインストール意外に解決法はあるでしょうか?
0370デフォルトの名無しさん2007/02/28(水) 16:52:50
あります
0371デフォルトの名無しさん2007/02/28(水) 16:57:37
>>370
良ければ(その手のHP等あればそれでも)教えていただけないでしょうか?
そもそもどう検索して探して良いのか・・・途方に暮れてます。
0372デフォルトの名無しさん2007/02/28(水) 17:04:17
>>371
ttp://dobon.net/vb/installer/index.html
0373デフォルトの名無しさん2007/02/28(水) 17:09:09
>>372
ディストリビューション ウイザード ってやつですね?
ありがとうございました。
0374デフォルトの名無しさん2007/02/28(水) 17:12:52
>>373
違います
0375デフォルトの名無しさん2007/02/28(水) 17:16:27
>>374
HPの説明に従って
ディストリビューション ウイザードを使って 
「パッケージ」なるものを作ってみたのですが
これでセットアップしたら使えるようになる
そういうことだと思ってましたが?(今作ってみました)
だめでしょうか?
0376デフォルトの名無しさん2007/02/28(水) 17:17:34
>>375
それ以外の方法で作ってください
0377デフォルトの名無しさん2007/02/28(水) 17:20:33
>>376
分かりました。試してみます。
0378デフォルトの名無しさん2007/03/01(木) 23:33:13
.netスレに書き込んでからふと思ったけど、VB6でフォーカスのマークを消すことって出来ますか?

私はボタンクリック後に別コントロールにフォーカス動かすようにしてるけど、それでも一瞬表示される&フォーカス残せないと面倒だよね。
GetFocusに他コントロール.setfocusしたら、微妙に残像が表示されるし
サブクラス化してボタンクリックと同時にフックして、強制的にクリックメソッド発生→フォーカスとかしてたら別のところで弊害がでそう。

VB6.0プロフェッサー様オシエテ!
0379デフォルトの名無しさん2007/03/02(金) 09:31:45
frm○○.showでfrm○○に飛んだ時
最初にForm_Roadがかかりますが、
前画面に戻り、再びfrm○○を読み込んでもForm_Roadを行いません。

Form_Roadを行うにはどうすればいいのでしょうか?
0380デフォルトの名無しさん2007/03/02(金) 09:33:17

そんな難しい事はあきらめて、俺といい事しないか?
0381デフォルトの名無しさん2007/03/02(金) 09:43:38
もどるときshowやれば?
0382デフォルトの名無しさん2007/03/02(金) 11:21:18
VB6.0を売っているところありますか?
0383デフォルトの名無しさん2007/03/02(金) 11:23:03
おとしてこいよサブスクリションかなんかのページで
0384デフォルトの名無しさん2007/03/02(金) 13:42:03
>>379
試してないから違ったらごめんだけど、前の画面に戻るとき
Unloadしてなくて、次showする時に既にLoadされてる状態だから
Loadイベントが呼ばれないだけでは?

0385デフォルトの名無しさん2007/03/02(金) 15:56:07
一度unloadしてからloadすりゃおk
0386デフォルトの名無しさん2007/03/02(金) 19:18:43
テキストファイルの中身を一行ずつ読み込む
という動作はどのようにすればできるんだっけ?
0387デフォルトの名無しさん2007/03/02(金) 19:34:34

>>386
そんな難しい事は考えないで俺の中に入れてくれ
0388デフォルトの名無しさん2007/03/02(金) 20:13:35
書き足りなかったのですいません
例えば、
テキストファイル1の中身を一行ずつ全部読み込んで
それをテキストファイル2に出力する
というようなやり方が分かる方いたら教えて下さい
よろしくお願いします
0389デフォルトの名無しさん2007/03/02(金) 20:16:46

>>388
大丈夫だ。
お前の事は長さも硬さも全部知ってるつもりだ。

いいから四つん這いになれ。
0390デフォルトの名無しさん2007/03/02(金) 20:41:52
>>388
FSOかFileOpenでいけるんちゃうかな
0391デフォルトの名無しさん2007/03/02(金) 20:49:04
>>388
const file1="hoge"
const file2="piyo"
dim ff1 as integer
dim ff2 as integer
dim ls as string
ff1=freefile(): open file1 for input access read lock read write as ff1
ff2=freefile(): open file2 for output access write lock read write as ff2
do until eof(ff1)
  line input #ff1, ls
  print #ff2, ls;
loop

こんなの?
0392デフォルトの名無しさん2007/03/02(金) 20:55:05
>>391
hogeとpiyoってのは何に対応してるの?

取りあえず今Notepadにある数字をNotepadに写し変える
という感じでソースを書いてるんですがファイル名指定してる
はずなのに実行するとエラーが出てしまいます・・・

Notepadの中身を読み込めないなんてことはないよね?
0393デフォルトの名無しさん2007/03/02(金) 20:56:14
ファイナルファンタジー?
0394デフォルトの名無しさん2007/03/02(金) 21:05:47
Notepadってwindows付属のメモ帳のことか?
実行ファイル=バイナリ読み込んでるの?
テキストファイルじゃないのか?
エラーならエラーでエラー番号と詳細内容かいてるだろ・・・
回答もらおうと思ってる文章じゃないな・・・
0395デフォルトの名無しさん2007/03/02(金) 21:08:12
ごめん、Notepadをテキストファイルだと思い込んでました・・・
混乱して全然分からないんだけどテキストファイルってのは
何ファイルのことをいうの?
0396デフォルトの名無しさん2007/03/02(金) 21:10:30
Notepadで保存したり開いたりできるファイル
0397デフォルトの名無しさん2007/03/02(金) 21:13:45
>>395
普通にShift-JISとかEUC-JPとかで文字が書き込んであるファイル
0398デフォルトの名無しさん2007/03/02(金) 21:20:29
>>395
ごめんといいつつも同じ多々良を踏むとは

とりあえず自分が何をしたいのか、どこまでできているのかを>>1参照して書くべし
現状だと霞かかった情報しか手に入ってないから最初から書くといい
0399デフォルトの名無しさん2007/03/02(金) 21:25:20
とりあえず俺がいいたいのは

・起動中のノートパッドに直接書き込みたいのか
・ノートパッドで開けるファイル形式に読み込み→書き込みしたいのか

そこんところはっきり。
あと質問者は名前に何か入れてもラワンと、上のレスじゃあ誰が質問してるのかわからんぞ
0400デフォルトの名無しさん2007/03/02(金) 21:30:23
・ノートパッドをバイナリで読み込むのか
0401デフォルトの名無しさん2007/03/02(金) 21:30:30
テキストファイル: テキストとして認識可能なように作ったファイル
バイナリファイル: テキストファイルとして作られなかったファイル
0402デフォルトの名無しさん2007/03/02(金) 21:32:59
>>401
つつくようで悪いが、その表現は早々に撤回した方が身の為だとおもうぞ。
0403デフォルトの名無しさん2007/03/02(金) 21:33:58
>>401
0か1かみたいな考え方だな
その発想はなかった
0404デフォルトの名無しさん2007/03/02(金) 21:34:39
つつく人はいつもじゃあ本当はどうなのかという事を語らない。
それで自分の意見に信憑性を持ってもらえるのか、客観的に考えて欲しい。
0405デフォルトの名無しさん2007/03/02(金) 21:34:56
やりたいこととしてはコマンドがクリックされたら
Notepad1の中身が読み込まれてNotepad2にその内容を表示するということです
下はネットにあったやつをファイル名の部分だけ書き換えたんだけど

'参照ファイルのファイル番号
Dim intFileNum As Integer
'行の内容を取得する変数
Dim strTxt As String
'空いているファイル番号を取得
intFileNum = FreeFile
'ファイルを開く
Open "C:\asobi\practice.txt" For Input As intFileNum   ←ここで指定したファイルはちゃんとあるはずなのに
'ファイルの最後までループ                 「ファイルが見つかりません」と表示されてしまいます・・・
Do Until EOF(intFileNum)
'行を変数に取り込む
Line Input #intFileNum, strTxt
'Readした内容をイミディエイトウィンドウに表示  ←ここはまだ書き換えてなくて、読み込んだものを
                          出力させる場所をしていしたいんですが書き方がよくわからないです・・・
Debug.Print strTxt

Loop
'ファイルを閉じる
Close intFileNum

0406デフォルトの名無しさん2007/03/02(金) 21:36:55
まず
Dir("C:\asobi\practice.txt")
を実行してファイルがあるか確認して見れ
04074052007/03/02(金) 21:37:08
>>399
・起動中のノートパッドに直接書き込みたいのか
・ノートパッドで開けるファイル形式に読み込み→書き込みしたいのか

後者です
0408デフォルトの名無しさん2007/03/02(金) 21:38:55
>>404は好く突く人ですね
0409デフォルトの名無しさん2007/03/02(金) 21:45:56
"C:\asobi\practice.txt"
ではなく
"C:\documents and settings\********\my documents\asobi\practice.txt"
とかに入っているとエスパーレスしてみる
0410デフォルトの名無しさん2007/03/02(金) 21:47:32
すまん、書き方が悪かったな

MsgBox Dir("ファイルパス")

これを実行して、ファイル名がちゃんと表示されて無ければパスが間違ってるってこと。
0411デフォルトの名無しさん2007/03/02(金) 21:48:04
orz

MsgBox Dir("C:\asobi\practice.txt")
0412デフォルトの名無しさん2007/03/02(金) 21:51:18
なんか対処療法的な確認方法しか出て無いけれど、

アイコンを右クリックしてプロパティをジーっと眺めてれば、何か見つかるかもね。
04134052007/03/03(土) 00:35:12
取りあえずプロパティを見てから拡張子をDTに変えたら
「ファイルが見つからない」という問題は解決しました
あとは読み込んだ内容をpracticeというNotepadに写すことができれば
いいんですが、下を実行しても指定したNotepadに何も表示されないといった
感じになってしまいます・・・
closeの位置等に問題があるのでしょうか?

'参照ファイルのファイル番号
Dim intFileNum As Integer
'行の内容を取得する変数
Dim strTxt As String

'空いているファイル番号を取得
intFileNum = FreeFile

'ファイルを開く
Open "F:\mydata\1.DT" For Input As intFileNum

'ファイルの最後までループ
Do Until EOF(intFileNum)

'行を変数に取り込む
Line Input #intFileNum, strTxt

Close intFileNum

Open "F:\practice.DT" For Output As intFileNum

Loop

'ファイルを閉じる
Close intFileNum
04144052007/03/03(土) 01:03:33
違うNotepadに出力できるようになりました

'参照ファイルのファイル番号
Dim intFileNum As Integer
'行の内容を取得する変数
Dim strDT As String
'空いているファイル番号を取得
intFileNum = FreeFile
'ファイルを開く
Open "F:\mydata\1.DT" For Input As intFileNum
'ファイルの最後までループ
Do Until EOF(intFileNum)
'行を変数に取り込む
Line Input #intFileNum, strDT

Close intFileNum

Open "F:\practice.DT" For Output As intFileNum

Write #intFileNum, strDT

Loop
'ファイルを閉じる
Close intFileNum

出力できるようにはなったけど、最初の一行目しかできないといったかんじで
改行されてる2行目以降も写せるようにしたいんだけど
このやり方をご存知の方いますか?
色々調べたけどわからんので、知ってる人いたらお願いします
0415デフォルトの名無しさん2007/03/03(土) 08:00:14
>>391
04164052007/03/03(土) 08:48:59
391のコードでもファイル名の部分を変更すれば
内容を読み込んで写し返るという処理はできるんだけど
例えば、
1
2
3
を書き写したいときに
123
と改行されない状態で出てきてしまうという感じです
あと改行して出力するみたいな処理のやり方が分かればできそうなんだけど
調べてもなかなか目的のものが出てこないです・・・
0417デフォルトの名無しさん2007/03/03(土) 08:52:50
> print #ff2, ls; 
print #ff2, ls
こうだな

> 調べてもなかなか目的のものが出てこないです
諦めたか
0418デフォルトの名無しさん2007/03/03(土) 09:10:47
改行されてないなら
改行すればいいじゃない
04194052007/03/03(土) 09:22:28
サンキューです
0420デフォルトの名無しさん2007/03/03(土) 13:26:41
値のリストから最大値を判定するというプログラムを書きたいんですが

Dim a(10) As Integer

If a(10) > Then

End If

この2行目で判定の対象となる値を全て比較して一番大きい値を出す
ような処理を書かなければならないんですがよく分かりません・・・
a(A )> a(A+1)
のような書き方になるのでしょうか?
今のとこ上手くまとまりませんが・・・
0421デフォルトの名無しさん2007/03/03(土) 14:02:06
>>420
リストが空の場合はちゃんと例外が起こるようになってるぞ:
public function maxItem(byref i() as integer) as integer
dim k as long
maxItem=i(lbound(i))
for k=lbound(i,1)+1 to ubound(i,1)
  if maxItem<i(k)) then maxItem=i(k)
next
end function
0422デフォルトの名無しさん2007/03/03(土) 14:21:14
>>421
コマンドがクリックされた瞬間にしに処理が行われ
目的の場所に最大値を出力する
という風にしたいんですが、それは可能ですか?
今そのソースをコマンドのプロシージャに組み入れたんですが
途中にEnd Subを入れる必要があると表示されてしまって
最大値判定ソースがコマンドプロシージャと切り離される感じになってしまいます・・・
0423デフォルトの名無しさん2007/03/03(土) 14:21:16
命名からセンスがないんだよ。
0424デフォルトの名無しさん2007/03/03(土) 14:56:02
>>422
> コマンドがクリックされた瞬間にしに処理が行われ
> 目的の場所に最大値を出力する
> という風にしたいんですが、それは可能ですか?
可能です

> 今そのソースをコマンドのプロシージャに組み入れたんですが
> 途中にEnd Subを入れる必要があると表示されてしまって
先ずは基礎の文法から理解してください
というのがセオリーなんでしょうが、とりあえずこんな感じです
Option Explicit
Private WithEvents btn          As CommandButton
Private list(1 To 10)           As Integer
Private Sub btn_Click(): MsgBox "目的の場所に" & maxItem(list) & "を出力する": End Sub
Private Sub Form_Load()
    list(5) = 100
    Set btn = Me.Controls.Add("VB.CommandButton", "btn")
    Call btn.Move(0, 0, 500, 500): btn.Visible = True
End Sub
Public Function maxItem(ByRef i() As Integer) As Integer
    Dim k As Long
    maxItem = i(LBound(i))
    For k = LBound(i, 1) + 1 To UBound(i, 1)
      If maxItem < i(k) Then maxItem = i(k)
    Next
End Function
0425デフォルトの名無しさん2007/03/03(土) 15:11:44
お前、過去にも間抜けなソースさらしてたな
0426デフォルトの名無しさん2007/03/03(土) 16:08:06
>>424
すいません、情報が足りなかったんですけど
テキストファイルの数字を読み込んで最大値を判定して別のテキストファイルに出力する
ということをやりたいんですけど教えて頂いたものを組み合わせた考えた↓じゃ上手くいかないです・・・
Private Sub Command1_Click()
Const file1 = "a"
Const file2 = "b"

Dim ff1 As Integer
Dim ff2 As Integer
Dim i(10) As String

ff1 = FreeFile(): Open "F:\text1.DT" For Input Access Read Lock Read Write As ff1
ff2 = FreeFile(): Open "F:\text2.DT" For Output Access Write Lock Read Write As ff2

Do Until EOF(ff1)
Line Input #ff1, i(10)

Public Function maxItem(ByRef i() As Integer) As Integer
Dim k As Long
maxItem = i(LBound(i))
For k = LBound(i, 1) + 1 To UBound(i, 1)
If maxItem < i(k) Then maxItem = i(k)
Next
Print #ff2, i(10)

Loop

End Function

これだと何が足りませんか?
0427デフォルトの名無しさん2007/03/03(土) 16:31:38
>>426
ああ、貴方か。

とりあえず文章の添削からだね。

> テキストファイルの数字を読み込んで最大値を判定して別のテキストファイルに出力する
数字と数値は別物、多分数値を言いたいのだろうけど、推測するにInteger型に収まる整数値なの?
テキストファイルのフォーマットも憶測するに、一行に一つの整数値が書き込まれてるのかな?
例)
10
20
-1
0
1
...

> ということをやりたいんですけど教えて頂いたものを組み合わせた考えた↓じゃ上手くいかないです・・・
変なたとえだけど、あなたの地元で駅までの道順をたずねられて教えた人に「それじゃ良くわからないんです」って応えられたらどうする?
見たいな気持ちになった。
できれば>>1参照して、『「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。 』を実践するとよいよ。
よいよ
0428デフォルトの名無しさん2007/03/03(土) 16:36:47
>>426
・全体的にVBとして構文がおかしい
・「Private Sub Command1_Click()」に対する「End Sub」はどこいった
・「Const file1 = "a"」と「Const file2 = "b"」はどんな意味があるんだ
・For文のLBoundとUBoundの第二引数を指定する意図は?
・Print #ff2, i(10)をする?Print #ff2, maxItemじゃないの?
0429デフォルトの名無しさん2007/03/03(土) 16:39:42
書き忘れ
・なんでclose処理してないんだ
・なぜLine Input #ff1, i(10)なんだ、これ1行でi(0) 〜 i(10)に数字は入らないぞ
0430デフォルトの名無しさん2007/03/03(土) 18:27:02
>>427
遅くなってすいません、今取りあえずやりたいことは
テキストファイルにある
10
20
-1
0
1
...
などの数値の中から最大値を判定し、別のファイルにこの場合だったら
20
と出力するということをやりたいです
最終的にはもっとものすごいことをやりたいんですけど
まずは全体から一つの最大値を取りだすということをやりたいです
0431デフォルトの名無しさん2007/03/03(土) 18:36:25
iがいっぱいあってわけわかめ
0432デフォルトの名無しさん2007/03/03(土) 18:53:41
>>428,429
自分でも理解し切れてない箇所があったんで、すいません
まだ基礎も満足にできてないため、これぐらい複雑な文に
なってくるとチンプンカンプンになってしまいます・・・
0433デフォルトの名無しさん2007/03/03(土) 18:58:24
>>430
了解、ただ
> 最終的にはもっとものすごいことをやりたいんですけど
この部分が気に掛かるけど(大雑把に言って、”すごい”こととか”本当は”と言っている物はアヤシイ物)

んで、こんな感じだろうね。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3728.txt
0434デフォルトの名無しさん2007/03/03(土) 18:59:51
>>433の
> Const File1="hoge"
> Const File2="hoge"
は
Const File1="F:\text1.DT"
Const File2="F:\text2.DT"
にしてみるといいのではないかと。
0435デフォルトの名無しさん2007/03/03(土) 19:05:29
>>433
本当にすいません、ありがとうございます
自分が最終的にやりたいことは
扱うのはおそらくテキストファイルにある数千万くらいの少数の数値のデータになると思うんですけど
その中から2000回に一回現れる極大点の値のみを抽出して別のテキストファイルに出力する
ということなんですけど、これはVBで実現可能ですか?
相当すごいプログラムにはなりそうですけど・・・
0436デフォルトの名無しさん2007/03/03(土) 19:13:30
俺も折角なので最初のファイル読んで最大値を返す部分作ってみた
http://www.uploda.org/uporg714904.txt.html
0437デフォルトの名無しさん2007/03/03(土) 19:14:32
>>435
>数千万くらいの少数
小数というか実数だな。

君のやりたいことは余裕で出来るよ。
0438デフォルトの名無しさん2007/03/03(土) 19:19:10
極大点だから、局所的な最大点であって、
非局所的な最大点ではないね。
04394352007/03/03(土) 19:31:56
>>437,438
丁度2000ごとじゃなく約2000回ごとぐらいに現れる極大点でした
しばらく自分で頑張って考えてみます
ヒントを少しもらいたいんですが、433のファイルの応用でできますか?
自分のイメージだと
極大点の前後の値に反応するようにして
極大点=b、直前の値=a、直後の値=cとすると
a<bかつb>c
の時にbを出力するみたいな感じなんですが
0440デフォルトの名無しさん2007/03/03(土) 19:35:08
グラフが単純な場合はそれでいいと思うけど、
グラフがギザギザの場合は
もうちょっと長いスパンで見ないとダメだと思う。
0441デフォルトの名無しさん2007/03/03(土) 19:37:13
>>439
上下に凸となる変曲点(頂点)が、
データ上にきれいに現れるならそれで良いと思うけど、
多少バラツキを持ってるなら、
前後数点のデータを使ったほうが良さ気。
0442デフォルトの名無しさん2007/03/03(土) 19:38:42
>>439
なんかもう少し詳しく聞けば10分もあれば作れそうだ

現状で分かっている例外としては、データの終端を極大点とみなせるかどうか?だな


> ヒントを少しもらいたいんですが、433のファイルの応用でできますか?

「応用」と一言に切ってしまうことができるのなら、全て応用でできるけど

>>433は全体から(つまりストリームではなくブロックデータから)最大の値を求めるものなのに対し、

新たな問題はストリームから狭義の極大値を引っ張り挙げるものだからちょっと構造が変わるよ。
04434352007/03/03(土) 19:50:39
よく考えたら自分の求めたい極大点と極大点の間にも
少し小さな値で一回だけ凸になる時がありますね・・・
というか自分が本当に出力したいものを勘違いしていました・・・
自分が求めたいのは極大点の値じゃなくて、一つの極大点から
次の極大点が現れるまでに何個数値があったかということでした
例えば、
1
2.3
3
2.4
1
0
-1
2
3
4
3
2
・・・
だったら7個
といったみたいに(実際に扱う数値はもっと差が小さい実数です
これを何周期も繰り返して全ての極大点間の数値の個数を求めたいんですが
このようなことを求めることも可能ですか?

0444デフォルトの名無しさん2007/03/03(土) 19:52:08
>>443
普通に可能です
VB6はまともな数値演算持ってるのでその辺は気になさらずに
0445デフォルトの名無しさん2007/03/03(土) 19:58:13
いつからこのスレはソフトをつくってやるスレになったんだ?
0446デフォルトの名無しさん2007/03/03(土) 20:04:35
こうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3729.txt
0447デフォルトの名無しさん2007/03/03(土) 20:05:27
>>445
最近vb触ってないから
実はダシにしてた
04484352007/03/03(土) 20:36:09
>>446
ありがとうございます
多分実際に扱う数値データを見て頂いた方が早いと思うんですが
Notepadファイルをアップする方法ってあるんですか?
■ このスレッドは過去ログ倉庫に格納されています