VBプログラマ質問スレ ..
[2ch|▼Menu]
175:デフォルトの名無しさん
08/04/10 20:49:33
>>173-174
それが、
0x12345678 のような 4桁以上の16進数だと型オーバーで変換が出来ません
MSDNのヘルプ見てもDouble型までが限界のようです
Long型のような8桁くらいの文字(16進)を数値に変換するのにはどうすればいいのかヘルプ見ながら悩んでます

176:デフォルトの名無しさん
08/04/10 20:59:50
>>175
どうせそんなレベルならVB6みたいな終わってる開発環境使う意味ないだろw
まあLongの型指定文字を調べてみることだね。

177:デフォルトの名無しさん
08/04/10 21:00:11
>>175
文字列右から4文字ずつ区切ってvalして、最後にシフトするのはどうですか?

178:デフォルトの名無しさん
08/04/10 21:18:11
>>176-177
CLngという型指定で変換出来ました
どうもありがとう

179:デフォルトの名無しさん
08/04/11 00:18:50
>>172
タスクマネージャーでメモリ使用量を確認していると、
各イベント(フォーム起動→終了→以下繰り返し等)を起動するたびに使用メモリが増加していきます。
循環参照の現象でしょうか?

180:デフォルトの名無しさん
08/04/11 00:51:38
>>179
循環参照って何のことだか理解してる?

>>172 に書いてある
>OnLoadでブレイクでも入れておけば分かるんじゃないかね

を実行してなさそうな文章なんだけどやったの?

181:デフォルトの名無しさん
08/04/11 03:06:23
プログラム板は当たりがきついな

182:デフォルトの名無しさん
08/04/11 03:09:23
>>179

>>172
> タスクマネージャーでメモリ使用量を確認していると、
> 各イベント(フォーム起動→終了→以下繰り返し等)を起動するたびに使用メモリが増加していきます。

解放してないから

183:デフォルトの名無しさん
08/04/11 03:09:56
>>181
おしえてぐーなら優しいけどな
あと2ちゃんでも女子中学生にはやさしいよ

184:デフォルトの名無しさん
08/04/11 06:46:11
つ「Unload Me」

185:デフォルトの名無しさん
08/04/11 10:46:53
Using src As New FileStream(srcName, FileMode.Open, FileAccess.Read)
While True
readSize = src.Read(buf, 0, BUFSIZE) ' 読み込み
If readSize = 0 Then
MsgBox("HIT=" & hval)
Exit While ' コピー完了
End If
End While
End Using

このコードでファイル操作の処理をすると
読み込み開始から終了までのあいだフォーム全体が操作不能になります
読み込み処理中でもボタン等の操作を可能にするにはどうすればいいでしょうか?
中断ボタンを作ってあるのですが操作不能になって機能しません

186:デフォルトの名無しさん
08/04/11 14:44:14

Visual Basic Version 5.0 Control Creation Edition
スレリンク(tech板:18番)

ふと思ったんだが、↑これと↓これ組み合わせて.EXEファイルを作ることできるのだろうか?

Microsoft Visual C++ Toolkit 2003
スレリンク(tech板)


187:デフォルトの名無しさん
08/04/11 17:54:26
上でDLL (OCX)作って、下でそれを使うEXE作るってことは可能だろうね。
そもそもなぜ今更VC++ 2003?
事情がなければ2005でも2008でも使えばいいだろうに。

188:デフォルトの名無しさん
08/04/11 19:00:08
>>185
つ「DoEvents」

189:デフォルトの名無しさん
08/04/12 20:13:12
ComboBoxでリストから項目が選択してドロップダウン部分が消えた瞬間に任意のコードを実行したいのですが
DropDownClosedやSelectionChangeCommitted
その他のそれらしいイベントを設定しても
選択→ドロップダウンが消える→再度選択
としないとそのコードが実行されません

どのイベントを設定すればいいでしょうか?

190:デフォルトの名無しさん
08/04/13 10:23:58
Click

191:デフォルトの名無しさん
08/04/13 10:45:44
SAVEデータのようにバイナリデータとShift_JISの文字列が混在するファイルの
文字列部分を編集して書き戻したいのですが

Dim FreeNum as Integer
Dim Bin1() as Byte , Bin2() as Byte
Dim strRes as String

FreeNum=FreeFile
Open hoge.bin For Binary As #FreeNum
Get #FreeNum, , Bin1
Close #FreeNum
strRes = StrConv(Bin1,vbUnicode)

'本来ここでstrResを編集する

Bin2=StrConv(strRes,vbFromUnicode)

とした時にBin2はBin1を再現せず、バイナリデータの部分が変わってしまいます。
通常このような操作を行う場合はどのようにすれば良いのでしょうか?
お力を貸して下さい。

192:デフォルトの名無しさん
08/04/13 18:48:40
>>191
それはShiftJISにしたときのバイト数えて詰め物したりでかなり面倒くさい。
結局Cランタイムのfopen系の関数をラップしたActiveXを作ってそれで読み書きさせた。

193:デフォルトの名無しさん
08/04/13 19:14:58
リストボックスで選択した場所から下の項目を削除したいのですが
下のプログラムだとindexエラーが出てうまくいきません

For i = ListBox1.SelectedIndex  To ListBox1.Items.Count - 1
ListBox1.Items.RemoveAt(i)
Next

どう対処すればいいでしょうか?

194:デフォルトの名無しさん
08/04/13 19:17:44
後ろから削っていくとか。

195:デフォルトの名無しさん
08/04/13 19:26:36
デバッグして確認したときそれぞれの値が
ListBox1.SelectedIndex=2
ListBox1.Items.Count=8  (項目数=3)
となっていて

その状態で>>193のFOR文を実行すると i の値が2,3,4,5,6,7 とステップして
ListBox1.Items.RemoveAt(i) で最後の項目まで問題なく削除出来ると思うのですが
どういう訳かエラーになります

196:デフォルトの名無しさん
08/04/13 19:28:34
>>195 修正
× (項目数=3)
○ (項目数=7)

197:デフォルトの名無しさん
08/04/13 19:33:24
どういう訳かも何も、たとえばRemoveAt(10)を実行した時点で
いままでItems(11)だった奴がItems(10)に繰り上がるわけだが

198:デフォルトの名無しさん
08/04/13 20:00:32
>>197
当たり前のことすら理解出来てない人に
答えを教えてくれてありがとうございます
無事ちゃんと動作するコードに出来ました

199:デフォルトの名無しさん
08/04/13 22:11:10
1年半後に登場するWindows7にはVB6ランタイムはサポートされますか?

200:デフォルトの名無しさん
08/04/13 22:59:27
知らんがな(´・ω・`)

201:デフォルトの名無しさん
08/04/14 17:37:40
VB6でPublicの構造体・変数の宣言可能な数(容量?)ってどの位か解りませんか?

202:デフォルトの名無しさん
08/04/15 12:38:32
VS2008のVBでラベルの背景を透明化するにはどうすればいいですか?
label1.BackColor = Color.Transparent
では出来なかったです

203:デフォルトの名無しさん
08/04/15 13:34:38
>>202
スレタイ読めますか?

204:デフォルトの名無しさん
08/04/15 23:42:02
>>201
そんなのあるんですか?

205:デフォルトの名無しさん
08/04/16 10:14:31
ループする処理の中にあるIF文をSelect文にしたら処理が倍以上かかるようになったんですが
これはどうしようもないことですか?

206:デフォルトの名無しさん
08/04/16 11:32:45
>>205
条件文がわからんから、「そんなもn」としか答えようが無い。

207:デフォルトの名無しさん
08/04/17 08:12:15
>>205
Selectを使うな。
Excelとのやりとりは速度が遅くなる。
Withを使うか、まとめて配列に代入してから配列を扱え。

208:デフォルトの名無しさん
08/04/17 19:13:52
>>204
よほどの事が無い限り、まず制限を超える事は無いと思いますが有りました。
(コンパイル時にメモリー不足と出る)


209:デフォルトの名無しさん
08/04/17 20:06:02
>>208
そりゃ単にメモリ増設すりゃ回避できるんじゃないか?

210:デフォルトの名無しさん
08/04/17 20:26:21
>>209
2GB以上アロケートできないとかないのかね?

211:デフォルトの名無しさん
08/04/17 22:35:50
ループ処理中に何かボタンおされたらループから抜けるプログラムを作りたいのですが
そのボタンのsubではない 違うSub内で
コントロール上のどのボタンが押されたのかを検出する方法ってありますか?

212:デフォルトの名無しさん
08/04/17 22:55:24
>>211
ループ処理の中でDoEventsと終了フラグのチェックを頻繁にやるしかない。
DoEventsを使うときは再入やら予定外の動作をはじくようにする必要がある。

213:デフォルトの名無しさん
08/04/18 12:23:30
昔、だれかが作ったソフトのメンテしてたら
フォームに貼り付けたコントロールの数がオーバーしてこれ以上追加できない
という状況になったときに、泣いたことはあるなw

214:デフォルトの名無しさん
08/04/18 14:24:41
メンテだと設計方針が間違っていようが、そのまま行かざるを得ないときもあるから辛いな

215:デフォルトの名無しさん
08/04/19 22:13:21
FileCopyでファイルコピーするとshift-jisで書き出したファイルがUTF-8になってしまうのですが
対象方はありますか?

216:デフォルトの名無しさん
08/04/21 21:51:25
VBからExcelに値を貼り付けてプレビュー表示をする処理にて
処理中は見えないようにするためVisibleをFalseにするのですが、
EXEファイルから起動するとVisibleをFalseにした段階で最背面に表示されてしますいます。

Visual Basicから起動するとプレビュー画面が最前面に表示されるのですが何故でしょう?

使っているコンポーネントはQuickPack、Farpoint SpreadSheet、InputMan Proです。

今まで別な環境で作った際はこんな現象になったことはありません。
同じコンポーネントを使っている方で克服した方はおりますか?

ちなみにSetWindowPos等使わないで済ませたいです。

途中ダイアログを表示したりメッセージボックスを表示させたりするので
Visual Basicで起動しているときと同じ用途で実現させたいのです。

ちょっと分かりにくいかも知れませんが宜しくお願い致します。

217:デフォルトの名無しさん
08/04/21 22:11:38
コピペ君って馬鹿だな、まで読んだ。

218:デフォルトの名無しさん
08/04/22 10:32:51
vb6の評価版使ってて、exeにできないんですが、
vb6.0安く売ってるところないですか?

219:デフォルトの名無しさん
08/04/22 12:38:09
>>218
なんで今時VB6?


220:デフォルトの名無しさん
08/04/22 12:56:29
>>219
だよねぇ。

Visual Basic 2008 Express がタダで手に入るこのご時世に。

221:デフォルトの名無しさん
08/04/22 15:26:39
ツールバーのアイコンを大きくしてメニュー名をアイコンの下に表示させたいのですが、
どうすればいいのでしょうか?

222:デフォルトの名無しさん
08/04/23 01:40:48
>>220
それってVB6のOCXの開発ライセンスキーが付いてる?

223:デフォルトの名無しさん
08/04/23 13:32:21
>>222
お前は何を言っているんだ

224:デフォルトの名無しさん
08/04/23 14:26:17
>>219
なんでVB(6.0以前)スレに居るの?

225:デフォルトの名無しさん
08/04/23 15:13:16
>>223
お前は何を聞いているんだ

226:デフォルトの名無しさん
08/04/23 18:07:06
VB6で立方メートルの単位(m3)のように右上に数字を乗せる方法はないでしょうか?
またはキーワードだけでも教えていただけないでしょうか?

227:デフォルトの名無しさん
08/04/23 19:43:53
>>226
ラベルで貼っちゃダメなの・・・?

228:デフォルトの名無しさん
08/04/23 20:01:01
>>227
通常はラベルで代用するものなのでしょうか?

229:デフォルトの名無しさん
08/04/23 20:22:32
ブラウザとかリッチエディットでそういう書式指定って方法も思いつく。
ほかにもUnicodeに対応していればm³や㎥って文字が使える。

230:デフォルトの名無しさん
08/04/23 22:17:56
brwWebBrowserで取得したものを
htmlかテキストにして文字変数に格納する方法ないですか?

231:デフォルトの名無しさん
08/04/23 23:18:41
>218
現在VB6を新規に入手する方法はMSDNに入るしかない。

>226
上付きの3はISO 8859-1/15の0xB3にあるが…UnicodeでもU+00B3だな。

232:230
08/04/23 23:29:47
Text1.Text = Inet1.OpenURL(brwWebBrowser.LocationURL)
で取得できましたが 文字バケのようになり日本語で表示されません。
フォントは明朝に設定したのですが。

233:230
08/04/24 00:41:02
RichTextBox1.Text = brwWebBrowser.Document.body.innertext
これで一応できましたが
普通のTextBoxは日本語ダメでしたっけ?

234:デフォルトの名無しさん
08/04/24 01:34:10
Text1.Text = brwWebBrowser.Document.body.innertext


235:デフォルトの名無しさん
08/04/24 10:25:48
VBのMAPIでメールを操作したいのですが
IDやPASSの設定はサンプルにのってるのですが
POP3等の設定がのっていません。
Outlookの設定に依存してるのでしょうか?

POP3設定のキーワードを教えてください。

236:230
08/04/24 13:46:15
Text = WebBrowser1.Document.body.innertext
これで数百行あるものを読み込むと200行ちょっとまでしかとれてないようですが・・・
行制限があるんでしょうか?

237:デフォルトの名無しさん
08/04/24 14:02:43
読み終わってからにしろよ早漏

238:230
08/04/24 14:33:54
なるほど。

239:デフォルトの名無しさん
08/04/25 10:12:47
指定ファイル(テキストやCSV)の行数を取得する良い方法はありますか?

     Dim i As Integer = 0
     Dim sr As New System.IO.StreamReader("C:\1.csv", System.Text.Encoding.Default)
      Do Until sr.Peek() = -1
        sr.ReadLine()
        i+=1
    Loop
    sr.Close()

今のところこの方法しか思い浮かびません
もっと簡潔な方法があれば教えて下さい

240:デフォルトの名無しさん
08/04/25 10:31:59
何を指して良い方法と言っているのだ?
時間?効率?ソースの短さ?exeのバイト数?

241:デフォルトの名無しさん
08/04/25 10:38:24
>>240
私が思う良い方法とはコードの短さです
今のところ>>239以外には他に思いつかなくて

242:デフォルトの名無しさん
08/04/25 11:04:19
コードの短さか


そんなクソの役にもたたねえ事にこだわるな!

243:デフォルトの名無しさん
08/04/25 13:16:01
>>239
とりあえずスレチだと思うのだが。
それ.NETだろ?


まぁ行数取得ならFileSystemObjectだったかTextStreamだったか忘れたが
1行で取得する処理書くこと出来るよ。

ググってみ?

244:デフォルトの名無しさん
08/04/25 14:45:05
VB6(SP6)です
OutBufferCountがしっかり送信バッファの値を返す設定って、何かあるでしょか?

MSComm1.Output = txdatbuf$
Text1.Text = Format(MSComm1.OutBufferCount)

このよーなコードを書いて、送信開始時のバッファを確認してみても0のままだったりして困っておりまする。
送信そのものは成功しています。

MSComm1 は

DTREnable=False
EOFEnable=False
Handshaking=0
InputMode=0
OutBufferSize=512
RThreshold=1
SThreshold=0
RTSEnabled=False

になってオリマす

245:デフォルトの名無しさん
08/04/25 14:46:39
ログをファイルを出力しているのですが
最新の1000行のみに維持したいのですが
何か良い方法はありますでしょうか?

246:デフォルトの名無しさん
08/04/25 15:17:27
良い方法?
1000行固定というクソ仕様をやめてしまえ

247:デフォルトの名無しさん
08/04/25 15:23:28
全部読んで1行捨てて書き出して、最後に今のログ1行書いたら駄目なのか?

248:デフォルトの名無しさん
08/04/26 02:44:34
WebBrowserコントロールを使って
そのWebの書き込みテキストボックスから書き込みする方法ありますかね?

249:デフォルトの名無しさん
08/04/26 11:30:44
>247
内部バッファならともかく、ファイルでそれはないだろ。

250:デフォルトの名無しさん
08/04/26 11:59:13
>>249
ならどうしたらいいのか書けよカス

251:デフォルトの名無しさん
08/04/26 12:03:03
>250
>246

252:デフォルトの名無しさん
08/04/26 12:55:00
お前の能力では出来ないって事か

253:デフォルトの名無しさん
08/04/26 14:18:36
↑こんな奴がいるから糞ソフトが無くならんのだよな

254:デフォルトの名無しさん
08/04/26 15:53:23
↑その糞ソフトすら書く方法を知らないカス

255:デフォルトの名無しさん
08/04/26 16:03:32
何が問題なのか理解してないようだ
中国人の外注のほうがマシに思える

256:デフォルトの名無しさん
08/04/26 16:06:07
>>249
お前というやつは・・・。
いきなり上書きしたら、
書き込みの途中でエラーが出たら
ログが壊れるだろ・・・。

257:デフォルトの名無しさん
08/04/26 16:21:52
>>255
うむ
中国人に「最新の1000行のみに維持したい」って言えば
ちゃんと作ってくれるだろうな

258:デフォルトの名無しさん
08/04/26 23:45:53
TextStream使えば?

・ReadAll()で全行読み込み(なかなか高速)
・Sprit()で改行文字をKeyに配列化
・UBound(配列)>=999の場合は、配列にする前の文字列からInStrRevで改行文字探して見つかった位置-1までを取得
・先頭に新しいログ文字列追加
・で、書き出し

みたいな

259:デフォルトの名無しさん
08/04/26 23:49:36
>>256
書き込みの途中って?
例えばどんなエラーがある?

260:デフォルトの名無しさん
08/04/26 23:57:19
>>256じゃないが
エラーも出ずにファイルごとぶっ壊された経験なら多々あるなあ
ローテートの基準は行数にしないで日付や時間で新規ファイルに割って、
取得や表示時の処理で行数割りにすべきじゃねえの?


261:デフォルトの名無しさん
08/04/26 23:59:31
1000行程度でエラーになった経験は無いからなあ

262:デフォルトの名無しさん
08/04/27 00:01:07
壊れる事象が起こる原因が上書きなら、
新規作成→リネームでいい気がするが?
元のFileは消した状態で。

263:デフォルトの名無しさん
08/04/27 00:05:12
>>260
それはプログラマである質問者でなく、設計したアホに言えよって話にならね?
もしくはそう注文してくる客に。

そういう仕様だって言われりゃマはそう作るしかないんだし
だったら最善の策を考えた方が仕事も早く終わるだろ。

264:デフォルトの名無しさん
08/04/27 00:12:02
>>259
1. ディスクフル
2. 書き込みするデータを用意する際のエラー
3. メディアの部分的な破損

こんなところか?

265:デフォルトの名無しさん
08/04/27 00:25:26
ディスクフルは今回の場合関係なさそうじゃね?
メディアの破損については今回のファイル書き出し云々関係無い気がする。

書き込みデータ準備のエラーは具体的には何がある?

266:デフォルトの名無しさん
08/04/27 00:26:09
>>263
だな、激しく同意
反論できる状況でなけりゃ、結局そう作るしかないんだよな

267:デフォルトの名無しさん
08/04/27 00:31:47
>>266
大体さ、設計について話すってのは、ぶっちゃけスレチな気がするんだよ。
ここはVBプログラマ質問スレだろ?

プログラマからの質問に対して設計に文句言うのはおかしいと思うんだが
間違ってるか?

268:デフォルトの名無しさん
08/04/27 00:44:46
>>265
メディアが部分的に破損してて書き込み失敗したら、
上書きしてた場合はログが壊れて、
別ファイル作ってた場合は前のログは残る。

269:デフォルトの名無しさん
08/04/27 00:52:41
[方法その1(昔からある方法)]
サイクリックファイルという概念を使う。
詳しくはググれ。

[方法その2]
ログを全てオンメモリに持って、時々ファイルにflush。
プログラムが異常終了したときは、ログが失われる可能性がある。

270:デフォルトの名無しさん
08/04/27 00:59:42
ファイルの書き込みは実際にはセクタ単位で行われるから
サイクリックファイルって万が一破損した場合の影響範囲は
1セクタ分になんのかね。

271:デフォルトの名無しさん
08/04/27 06:57:18
>>267
設計に触れなくていいと言うなら間違っている
与えられた事しかできないのは下郎の仕事だよ

272:デフォルトの名無しさん
08/04/27 08:51:52
ログファイルの行数制限ってそれ程アホな仕様とは思えないんだが

273:デフォルトの名無しさん
08/04/27 09:05:46
馬鹿ですね。

274:デフォルトの名無しさん
08/04/27 11:10:24
>>271
そうでなくてスレチって意味だろ

275:デフォルトの名無しさん
08/04/27 15:05:31
フォームが非アクティブな時にクリップボードを監視して
文字があればフォーム上のテキストボックスにすぐ貼り付けるというプログラムを作っているのですが
FormのLostFocusで処理させるとクリップボードに文字をコピーしたあと
フォームをアクティブにしないとテキストボックスに内容が反映されません

どのイベントで処理すればいいでしょうか?

276:デフォルトの名無しさん
08/04/27 15:19:39
>>275
監視って言いながら1回しか見てないの?
Timer使って一定時間ごとにチェックするとかじゃなく?

277:デフォルトの名無しさん
08/04/27 20:49:19
>>272
うむ、組み込み系なら良くあること

278:デフォルトの名無しさん
08/04/27 22:19:51
1行500byteで、50メガ程のテキストファイルをADOを使ってmdbに突っ込んでるんですが、
テキストファイルの改行コードがlfなんで、LineInputじゃ取れないんで、
一度バイナリで取り込みcrlfに変換後、保存してLineInputってのもスマートじゃないし、
stringで全部読み込み、midって取るのも後半重くなるし〜って事で、詰まってます。

何かいい方法はありませんでしょうか?

279:デフォルトの名無しさん
08/04/27 23:12:03
>>278
ADOのStreamオブジェクトを使うといいような気がする

280:デフォルトの名無しさん
08/04/28 10:48:11
>>249
1000行ぐらい内部バッファあけといて毎回読み書きしてもいいとおもたんだが
もしかして一般的には不毛な設計なのか?

281:デフォルトの名無しさん
08/04/28 14:06:24
無駄にHDDを劣化させることは無いだろ
単純なログにすれば何も問題ないのにCPUの無駄遣いするなよ
Vistaを筆頭に、重かったりメモリ食いまくったりするのが流行なのかもしれないがな

282:デフォルトの名無しさん
08/04/28 14:15:14
バカは黙ってろよ

283:デフォルトの名無しさん
08/04/28 14:54:46
車や電化製品でも、誰も使わない機能をつけるのがカッコイーんだよ。
自己満足の世界に口を出すなっつーの。

284:デフォルトの名無しさん
08/04/28 16:06:17
知的探求は必要
ソースをいかに短く書くか燃えなかった?

285:デフォルトの名無しさん
08/04/28 17:11:45
行固定のログファイルとか良くやるけどね
これだけ議論になるということは、あまりこういう仕様に直面したこと無いのか?

286:デフォルトの名無しさん
08/04/28 17:26:55
通信アプリなどのようにリクエストが多かったりするログで1000行固定はクソ仕様かもしれない
だが今回は1000行であり1起動で数回くらいの頻度だろ?騒ぐほどの事ではない

でも俺もクソ仕様だとおもう

287:デフォルトの名無しさん
08/04/29 11:12:32
VB6なんですが、
製作しているプログラムProgAではOpenでテキストファイル(1行のみ存在)
を開いてInputのRead Sharedで1秒毎に読んでは閉じます。参照しかしません。

別のプログラムProgBからそのテキストファイルは
1秒毎に更新されています。内部の仕様はわかりませんがProgBから
もしロックをかけて更新しているなら
同時にProgA側で開こうとすればエラーが出ると思います。
それは問題ありません。

ProgAでファイルを参照していてもProgBからそのファイルの更新さえ
できていれば、ProgAとしては問題ないのですが、
今の状態では不都合が生じるでしょうか?

ProgAでファイルを開いている状態(ブレークポイントでとめて)で
自分で作った外部アプリでファイルに更新をかけてみたのですが、
ファイルは普通に更新されたのですが、これで良いのかどうか。。。

288:デフォルトの名無しさん
08/04/29 17:01:25
プログレスバーの上にColor.Transparentを設定したラベルをおいて
ラベルの親コントロールをプログレスバーに再設定しても
どうやらプログレスバーがColor.Transparentをサポートしていないようで
ラベルの背景が半透明化されません

プログレスバーのようなColor.Transparentをサポートしないコントロール上で
背景を半透明にさせるにはどうすればいいですか?

289:デフォルトの名無しさん
08/04/30 01:43:37
文字をpadleft等で桁揃えして文字数が同じなのを確認して
コンボボックスのフォントをMSPゴシック、MS UIゴシック等の等角フォントにして
フォントが変更されたのも確認した後
それらの文字数が同じアイテムをコンボボックスに追加してリスト内のアイテムを確認すると
どうやってもズレて表示されてしまいます
解決法ってありますか?

290:デフォルトの名無しさん
08/04/30 02:01:53
>>289
> コンボボックスのフォントをMSPゴシック、MS UIゴシック等の等角フォントにして

上記は等角フォントではないよ。
MSゴシックを使ったら?


291:デフォルトの名無しさん
08/04/30 04:34:26
>>290
MSゴシックにしたら改善されました、ありがとうござます
フォントについて勘違いしてたみたいです
プログラミング以前の話に答えていただいて助かりました

292:デフォルトの名無しさん
08/04/30 09:44:45
Join関数を使わないでMidステートメント(関数ではない)で文字列を連結する場合、MidとMid$ではどちらがいいの?
速度を計っても差がわからない。
どっちも同じなのかな?

関数ならもちろんMid$が少し速いが。

293:デフォルトの名無しさん
08/04/30 12:34:02
そんな知識もない奴がいまさらVB使ってどうするのかなw
っていうか、mid$で文字列連結って意味不明な気がするが。

まあここでも散々既出だと思う(折れ自身複数回回答してるから)けど、
(っていうかググッてもすぐ回答が見つかるはずだとも思うが)

 $付き: 返り値の型がString
 $なし: 返り値の型がVariant

Variant返す関数の存在理由は良く知らないが、普通は使う必要ないんじゃないのかな。

294:デフォルトの名無しさん
08/04/30 13:21:40
>>293
Mid$で連結が意味不明なら答えるなよ。
わかる人はすぐ分る。
そもそもオマイは関数と勘違いしてるし。
俺より初心者みたいだなw

295:デフォルトの名無しさん
08/04/30 13:53:06
>そんな知識もない奴がいまさらVB使ってどうするのかなw

すぐこういう事を言い出す輩が多いな。
あとクソ仕様がどうとか。
学生か趣味でしか使わない奴らには一生理解できないんだろうけどね。

296:デフォルトの名無しさん
08/04/30 13:57:09
>>287です
簡潔でなかったので、簡潔に書きます。

テキストファイルAをあるアプリAで
OPENステートメントのRead Sharedで開いていた場合
別アプリBでファイルAを開いたり更新したりしようとすると
問題が生じるでしょうか?

297:デフォルトの名無しさん
08/04/30 18:35:54
誰か>>294の言ってる意味がわかる奴いる?w

俺は意味不明なこと言ってるとしか思えないが、
正直VBは年に1度触るか触らないかの状態なので自信もって否定はできない、と一応謙虚に言っておく。

ついでにまあどうでもいいが、「そんな知識もない奴がいまさらVB使ってどうする」
って指摘が不適切とは俺は思えないんだよねやっぱり。

初心者が今更VB使ってどうすんの。
まあそりゃ保守の需要とか学校の講義でたまたま使ってるとかあるのかもしれんが、
今更初心者にVBのコードを保守させる会社とか、今更VB6を使って教える学校ってのは如何なもんなのかねえw

298:デフォルトの名無しさん
08/04/30 18:51:23
いやいや。「お前が言うな」

299:デフォルトの名無しさん
08/04/30 19:04:12
>>297
恥ずかしい奴だな。
URLリンク(support.microsoft.com)

300:デフォルトの名無しさん
08/04/30 19:19:17
mid$で連結って、前スレあたりで話題になったよね

301:デフォルトの名無しさん
08/04/30 19:21:36
>>297はMidステートメントは使ったことないんだよきっと。
&演算子で連結することしか知らなかったりしてw

302:デフォルトの名無しさん
08/04/30 19:23:40
知らなかったのならググればよかったのにw

303:デフォルトの名無しさん
08/04/30 19:25:43
>>299
語るに落ちてるな。
サンプルコードをロクに理解せずにコピペして使ってるVB厨房の君自身をね。

そのサンプルコードの動作原理をちゃんと理解してる?w
理解してたら決して「Mid$で文字列を連結」などとは言わないよ。
そのコードでMid$が担ってる機能は「文字列の連結」じゃなくて「置換」だと思うけどね

304:デフォルトの名無しさん
08/04/30 19:30:40
>>303
では、件のURLの<title>がなぜそのようになっているか、説明してもらおうか。

305:デフォルトの名無しさん
08/04/30 19:32:16
>>303
なぁ、こんな所で戦っても、何も得るものないぞ?
匿名なんだからさ、おとなしく引きさがれよ。

306:デフォルトの名無しさん
08/04/30 19:33:35
人に突っ込む前になぜ"pseudo-concatenation"と書いてあるか考えた?
っていうかコード読め。読んで理解しろって。
人様に突っ込むのなんざその後だろうが。

307:デフォルトの名無しさん
08/04/30 19:36:44
>>303
とことん恥ずかしい奴だな。
お前は>>292の内容が全く理解も想像もできなかったんだろ?
「文字列連結」と「Mid」というキーワードで連想するものを初めから知ってたらな、
最初の発言で「それは置換だろ」と指摘しとけよ。

もっともそんなこと指摘しても、>>292の疑問には何の解決にもならんがな。

ちなみに、>>292の回答は、「自分で計測して速い方を使え」だ。同じだったら、好きな方でかまわん。

308:デフォルトの名無しさん
08/04/30 19:42:50
>>307
その回答もどうかと
そんな浅い事なら質問してないだろう。

309:デフォルトの名無しさん
08/04/30 19:43:03
顔真っ赤で反論考え中w

310:デフォルトの名無しさん
08/04/30 19:45:23
そもそもMid$ステートメントなんてないのかもね。
Join関数をJoin$と書いても動くのと同じじゃねーの?

311:デフォルトの名無しさん
08/04/30 19:45:43
>>308
内部実装を知りたいなら、プロセスにアタッチして逆アセンブルされてるのを
眺めたらわかるかもね。

俺は興味無いけど。

312:デフォルトの名無しさん
08/04/30 19:46:56
>>307
何をいってるんだコイツ。
俺はエスパーじゃない。
>>292の「Midステートメント(関数ではない)で文字列を連結」が>>299
コードのことを指しているとして、そんなことが俺にわかるわけがない。

313:デフォルトの名無しさん
08/04/30 19:48:47
>>312
つ「知らないなら黙っとけ」

314:デフォルトの名無しさん
08/04/30 19:49:26
普通Midステートメントと文字列の連結といったらわかるぞ?
エスパーじゃないのはもともと分かってるw

315:デフォルトの名無しさん
08/04/30 19:53:43
>>312
わからないなら、何でレスしたんだ?
おとなしく黙っとけば恥もかかずに済んだものを。

316:デフォルトの名無しさん
08/04/30 19:58:20
VBは年に一度触るかどうかレベルの奴が、何でこのスレ巡回してんだよw
教えたがりもたいがいにしとけよw

317:デフォルトの名無しさん
08/04/30 21:23:09
これはひどい・・・

318:デフォルトの名無しさん
08/04/30 22:02:02
ここではよくあること
気にするな

319:デフォルトの名無しさん
08/05/02 20:16:42
>>292
この間未だにVB5で稼動してるシステムにVB6と互換性あるJoin関数やReplace関数作ったんだけど
そんときMidステートメント使ったのね。

最初はMidでやってたんだけど遅い気がしてMid$に変えたら早くなったよ。
VB5だからなのか、使ってるマシンが古いせいなのかは知らないけど、
Mid$の方が早いみたいだしMid$使ったらどうかな?

320:292
08/05/03 20:34:21
>>293以外のみんなありがとね。
こちら何度やっても差が出なくて困ってる。
おれも>319のようにMid$の方が速かったことがたしかあったけど、どうも最近再現しない。
>>310のJoin$みたいに、もしかしてつけなくていいものをつけてるとしたら馬鹿らしいし
>>319にはすまんけど付けないことにするかな?

321:デフォルトの名無しさん
08/05/03 22:23:53
>>320
URLリンク(officetanaka.net)

322:デフォルトの名無しさん
08/05/03 23:21:14
>>321
500万回でMidが5秒って、1回あたり1usじゃん。
+で文字列連結するのをMidに変えたときの恩恵に比べれば、差なんて無いも同じ。

・・・まぁ、俺は常にMid$つかうけどね。

323:292
08/05/03 23:44:10
>>321
あまりラベルの低いサイトにリンク張らないように。
それってMid$関数だろ?
俺が言ってるのは関数じゃなくてステートメント。

324:デフォルトの名無しさん
08/05/03 23:49:57
いいかげん、うざくなってきたな

325:デフォルトの名無しさん
08/05/04 00:11:16
うむ

326:319
08/05/04 11:33:59
>>320
まあそれはお好きにどうぞw

327:デフォルトの名無しさん
08/05/04 17:03:11
なんか以前論争になったときは「変なこという奴だな」と思いつつも黙っていたが、
VBのような言語(つまりCのような設計思想の言語とは違う、と言いたいんだが)で
「組み込み関数」と「ステートメント」を峻別することに意味なんてあるんか?w

確かにMSDNライブラリ(俺の手元にあるのは2001年10月のもの)を見ると、
たとえばMid$ならMid$に関して、「Midステートメント」と「Mid関数」の二つのエントリーがあるが、
二つの説明を見比べれば、「Midステートメント」の方は明らかに「Mid関数」の返り値の型の仕様ついて
詳細な説明をスキップするための便宜上のもの(はっきり言えば煙に巻いて誤魔化している)
に過ぎないように思われるが。

328:デフォルトの名無しさん
08/05/04 21:36:28
Dim s As String
s = "1234567890"
Mid$(s, 3) = "alpha"
Mid(s, 3) = "beta"

vb6でこーゆーコードをコンパイルして、逆汗したが、
結局両方とも同じように_vbaMidStmtBstr呼んでるだけだたよ。

329:デフォルトの名無しさん
08/05/05 05:46:33
ってことはMidで十分ってことだよな。
関数はMid$が常識だろうが。

330:デフォルトの名無しさん
08/05/05 09:28:20
フォーム タイトルバーのフォントサイズを変更するにはどうすればいいですか?

フォーム プロパティのフォントサイズを指定すると
置かれている各コントロールのフォントサイズは変わりますが
肝心なタイトルバーのフォントサイズが変更されません

331:デフォルトの名無しさん
08/05/05 12:55:21
画面のプロパティのデザインで決まっているので、個別のウィンドウで変更することはできません。

332:デフォルトの名無しさん
08/05/06 20:27:53
WebBrowser1でWebを読み込んで縦スクロールバーをコントロールする方法ないですか?
最初に一番下まで持っていきたいのですが。

333:デフォルトの名無しさん
08/05/07 12:10:56
Webを書き換えできる立場にいるなら<a name="hoge"></a>でアンカー付けて読み込む時にURL末尾に#hoge
Webは書き換えられないならフォーカスをIEコンポにしてSendKesとか・・・

334:デフォルトの名無しさん
08/05/07 15:17:49
>>333
できました ありがとうございます。

335:デフォルトの名無しさん
08/05/09 00:06:54
midの話題に便乗して質問
replace関数とmidステートメントの使い分けって
どういう風にしたらよろし?

あとreplace関数で下のようにInStr関数を使って開始位置を設定するのは意味がない?

strHoge = "...hoge"

strFuga = Replace (strHoge, "hoge", "fuga", InStr(strHoge, "fuga", vbBinaryCompare))

336:デフォルトの名無しさん
08/05/09 00:36:52
>>335
使い分けって全然別物じゃんw
っていうか、だからVBのような言語で関数とステートメントを「使い分け」ることこそ意味がないつーに。

mid:
 与えられたBSTRのバイナリイメージを直接上書きする。
 当然、置き換えられた部分の文字数も、文字列の長さも変わらない。(変えられない)

replace:
 与えられた文字列の中の特定の部分を別の文字列で置き換えた文字列を新たに作成する。
 「置き換えられる」部分文字列の長さと「置き換える」部分文字列の長さは違っていてもかまわない。

337:デフォルトの名無しさん
08/05/13 02:50:02
vb6.0でフォームだけ透明化して、ラベルなどはそのまま表示させることって可能でしょうか?
方法があれば教えてください。

338:デフォルトの名無しさん
08/05/13 04:27:56
十字キーの↓でラベルを順に選択できるようにしたいのですが、

If GetAsyncKeyState(vbKeyDown) Then
If Label3.ForeColor = Magenta Then
Label4.ForeColor = Magenta
Label3.ForeColor = Yellow
End If
If Label4.ForeColor = Magenta Then
Label5.ForeColor = Magenta
Label4.ForeColor = Yellow
End If
If Label5.ForeColor = Magenta Then
Label6.ForeColor = Magenta
Label5.ForeColor = Yellow
End If
End If

と記述するよりもっと効率がいいやり方はないのでしょうか?

339:デフォルトの名無しさん
08/05/13 08:28:01
>>338
効率以前に「他人に意味が通じる文章」を書く方が先決だろう。
というか、推敲する手間を惜しむような奴にプログラマの才能などないと思う。

340:デフォルトの名無しさん
08/05/13 12:30:28
>>338
効率もなにも、ひょっとしてそのコードバグってないか?
13、14、15はYellowになるだろ、一回↓キー押しただけで
順ってなんですか?

341:デフォルトの名無しさん
08/05/13 14:12:33
>>338
訳:カーソルキーの↓キーを1回押すごとにラベルを順番に選択(色を変更)したいのですが、
>>338のコードと記述するよりスマートになるやり方はありませんか?

342:デフォルトの名無しさん
08/05/14 00:08:54
>>339
分かりにくくてすみません・・・

>>340
バグってます。
通常の状態をマジェンタ、選択されてる状態を黄色にして、
↓キーを押すたびに選択されているラベルを変えるプログラムをつくりたいんですが、うまく行きません・・・

>>341
そういうことです。ありがとうございます

343:デフォルトの名無しさん
08/05/14 02:23:29
ラベルをコントロール配列にでもして、
現在黄色い場所をインデックスとして覚えといて
そいつをカーソルキーでうろうろさせるとか

344:デフォルトの名無しさん
08/05/14 03:49:52

◆6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
URLリンク(system-trading.jp)

5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
  デモトレードの優勝者には賞金三百万円がプレゼントされます。


▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
URLリンク(www.fx-gp.com)

▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円

345:デフォルトの名無しさん
08/05/14 08:19:34
コピペ君って馬鹿だな、まで読んだ。

346:デフォルトの名無しさん
08/05/14 18:24:00
GetAsyncKeyStateを使うとボタンを瞬時に離さないとIf以下のコードが何回も繰り返し行われてしまいます。
途中にWaitなどを入れてみましたが、そうするとキーを押したときに反応しないときがあります。
解決方法を教えてください。

347:デフォルトの名無しさん
08/05/14 22:46:12
>>346
釣りに見えるのはなぜなになでしこ

簡単に解決させたいなら ElseIf と KeyUpイベントを覚えるといいと思うよ

348:デフォルトの名無しさん
08/05/15 00:04:46
>>374
偉そうに舐めた口利いてる奴がそのレベルじゃアカンだろうw
コントロールのイベントはフォーカスがあるときしか拾えない。
こんなUIの基礎も理解してないの?

>>346
GetAsyncKeyStateのリファレンスにまんまの答えが書いてあるじゃん。
もちろん自前でステートマシン作って解決してもいいんだけど。
ステートマシンっていう考え方は小学生でも理解できるわりに応用が利く(たとえば
>>338のようなコードをわかりやすくするのにも使える)から覚えて損はないよ。

349:デフォルトの名無しさん
08/05/15 00:18:53
>>347
ElseIfとKeyUpですか・・・ちょっと調べてきます

>>348
なるほど。もっと詳しく勉強する必要があるんですね。
ふたりとも回答ありがとうございます

350:デフォルトの名無しさん
08/05/15 08:21:35
だから詳しく勉強する必要はないの。
そう言ってるでしょ?
MSDNライブラリのGetAsyncKeyStateの項にそのまんま答え書いてある

351:デフォルトの名無しさん
08/05/15 17:22:21
>>348
FormにKeyUpイベントあんの知らんの?

352:デフォルトの名無しさん
08/05/15 17:36:32
>>348
Labelのイベントだとは書かれていないのにも関わらず
Label_KeyUp()に書けと読み取ったお前もかなりやばいぞ。

キー操作でLabelに何かアクションする場合、
Form_KeyDown()やForm_KeyUp()に処理が書かれることが多い。
>>347はそれを言ってるんだと思うが?

353:デフォルトの名無しさん
08/05/15 17:56:57
VB6を使ってるんだがFlexgridでAccess2000に接続したものを表示したい。
ADOコントロールを使わずに接続することって可能?

354:デフォルトの名無しさん
08/05/15 18:01:23
まず質問者と>>348>>338のバグを認識しないとな。

355:デフォルトの名無しさん
08/05/15 18:50:24
>>353
DAOでやるってことかな

356:デフォルトの名無しさん
08/05/15 19:40:08
初歩的な質問で恐縮ですが、

vbでsendkeysを使って作成しておりました。
さまざまな問題が出たため、apiを使用しキーボードシュミレートを
行うため、下記のサイトを参考に組み込みました。
URLリンク(hanatyan.sakura.ne.jp)

こちらで送信はできたのですが、ポップアップするような
アプリケーションの場合そこで制御が停止してしまいます。

停止せずに送る方法がありましたらお教え下さい。


357:デフォルトの名無しさん
08/05/16 00:21:38
>>351-352
あのなあw
それ以上馬鹿を晒さないうちに黙っていた方がいいと思うよ。

358:デフォルトの名無しさん
08/05/16 02:04:54
>>352

359:デフォルトの名無しさん
08/05/16 02:56:11
VB脳w

360:デフォルトの名無しさん
08/05/16 11:35:01
VB6を使用しています。
ADO2.5のRecordsetオブジェクトを使用し
以下のようなDBを参照し

フィールド1 |
----------
A |
B |
C |

データを
Aを取得し変数にセット→MoveNext
Bを取得し変数にセット→MoveNext
Cを取得し変数にセット
という流れで取得しています。

MoveNextなどをせずに
一気にA B Cのデータを取得し変数にセットをしたいです。
もし可能であればご教授ねがえませんか?


361:デフォルトの名無しさん
08/05/16 11:49:27
ご教授なんて呼ばれても そんな人いません

362:デフォルトの名無しさん
08/05/16 12:19:34
恥ずかしい馬鹿だな。
「ご教授」でもいいんだよ。嘘だと思うなら辞書引いてみな。

DBはやったことないんで質問には答えられなくて申し訳ない。

363:デフォルトの名無しさん
08/05/16 12:28:39
>>362
ご教授なんて日本語存在しませんがw
嘘だと思うなら「間違った日本語」とかでググってみな?w

あ、ゆとりさんに無理ですか そうですか
存在しないものを作りあげてしまうなんて
もうレベルが低すぎてこちらまで恥ずかしくなってきましたw

364:デフォルトの名無しさん
08/05/16 12:31:39
辞書を見て自分の都合のいい解釈する人に何を言っても。

365:デフォルトの名無しさん
08/05/16 12:33:54
それはいわゆる無知な「誤用厨」(まあ今俺が命名したんだけどw)が
勝手にそう言ってるだけ。

だから辞書引けって馬鹿。

ついでにその「誤用厨」が得意げに指摘する「確信犯という言葉の誤用」も
誤用じゃないんだよ本当は。

366:デフォルトの名無しさん
08/05/16 12:41:38
間違ったものを強引に正しいものにしようと必死な人がいると聞いて
飛んできますた

>>365
間違いを指摘されてるんだから、そろそろ悪あがきは止めて あきらめようぜ?ww
お前が馬鹿なのは十分分かったから、これ以上 墓穴掘るなよ

ご教授はどう考えても 存在しない日本語
日本人なら正しい日本語使え、プログラミングとかやる奴ならなおさら

367:デフォルトの名無しさん
08/05/16 12:44:29
あのなあ。
そもそも「教授」って言葉をポストに使う方が元々は派生的な用法だっての。
字面見ればわかるだろそんなの。

368:デフォルトの名無しさん
08/05/16 13:00:50
プログラムは正しくない命令文ではエラーが出るが、
「ご教授ねがう」は「ご教示いただく」のことだろうなってわかるだろ。
教えてやればいいだけでしょ。

お前らそんな固い頭でプログラミングとか向いてないんじゃね。

>>360
文章から、変数は配列じゃないと想定してレスすると、一気に変数に入れるのは不可能。

数が少ないならフィールド横に配置して1レコードにするとか。
フィールド1 | フィールド2 | フィールド3 |
----------
A | B | C |

変数に配列使ってループさせれば解決すると思うけどネ。

369:デフォルトの名無しさん
08/05/16 13:08:43
 Function Nihongo_OK(ByVal str As String) As Boolean

Select Case Instr(str,"ご教授")
 Case 0
  Return True
 Case Else
  Return False
End Select

End Function

370:デフォルトの名無しさん
08/05/16 13:25:32
Debug.Print Nihongo_OK("あたご教授は素晴しい教授だ")
False

( ゚Д゚)

371:デフォルトの名無しさん
08/05/16 13:26:54
誰?

372:デフォルトの名無しさん
08/05/16 16:08:10
ご教授って存在しないの?
教授に対して
ご教授お願いしますってのもだめなの?

373:デフォルトの名無しさん
08/05/16 18:47:18

Private Sub CommandButton2_Click()

Dim mambo As Date
If Trim(mambo) = Null Then Exit Sub
mambo = UserForm1.ComboBox1.Value
Call search_light(mambo)

End Sub

上のプログラムで「mambo」という変数には時間が入る(or空白)のですが、
「mambo」が空白の時でも、プロシージャが終了してくれません。

「""」を使うとエラーになるし、エラートラップを使うしかないのでしょうか?

374:デフォルトの名無しさん
08/05/17 11:42:08
>>360
Recordset.GetRowsメソッドじゃだめ?

375:デフォルトの名無しさん
08/05/17 11:48:17
>>373
とりあえずDate型の初期値はNullじゃないよ

If mambo = #0:00:00# Then Exit Sub

376:デフォルトの名無しさん
08/05/17 12:38:58
ListViewのような行と列を持つコントロールに
テキストボックスやコンボボックスを表示されられるコントロール名ってなんでしょうか?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4383日前に更新/166 KB
担当:undef