VisualBasicこっち
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0002デフォルトの名無しさん
NGNGシフト文字をEUC文字に変換する方法、教えて
nkf32.dllはwin2000+vb6sp5では、不正処理で使えんよ。
0003デフォルトの名無しさん
NGNGEUCコードをシフトJISコードに変換する
http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/e/euc2sjis.html
0004デフォルトの名無しさん
NGNG> シフト文字をEUC文字に変換する方法
ここから探して
http://piza.2ch.net/test/read.cgi?bbs=tech&key=968328471&ls=50
> nkf32.dllはwin2000+vb6sp5では、不正処理で使えんよ。
ほんまかいな
0005デフォルトの名無しさん
NGNGないよ
0006Bee
NGNG少しでも動作を軽くするために気にしている事なんかありますか?
なるべくVB特有の事例を挙げて欲しいです。
0007デフォルトの名無しさん
NGNGVB使ってる限り最適化にはおのずと限界があるんだし、むしろ
動作を軽く「見せかける」ために、スプラッシュウィンドウとか
プログレスバーを適切に表示することを気をつけた方がいいと思う
0008>6
NGNG0009>6
NGNG0010デフォルトの名無しさん
NGNG0011元VB 現D使い
NGNGデータをクラスファイルでひとまとめにしておいて
必要な時にNewで生成し、必要無くなったらこまめに
Set Obj = Nothingで解放する。
関連性の高いフォームはまとめてLoadし、Show,Hideで
切替を速く見せる。必要なくなればまとめてUnLoadして
Set Nothing。これもクラスでまとめておく。
グラフィックはリソースとしては取り込まない。
使う時もファイルから読み込む。
ActiveX使用も極力避ける。
0012Bee
NGNGVB内での最適化のノウハウが伺いたかったのですが・・・
僕の書き込みが悪かったようです。ということで、
VB内での(VBのみでの)最適化のノウハウなどありましたら、
教えていただけませんでしょうか?
>>7
なるほど。というかその辺はUIとして気をつけなければいけない
部分でもありますね。VBならなおさら。
>>10
確かにDoEventsはなかなかコストの高い命令のようですね。
>>11
オブジェクトの解放というのは速度的な影響があるのでしょうか?
こまめにやるよりは、(理想ですが)終了時にまとめて解放した方が
実際の動作としては軽く感じませんか?
ファイルから読み込むというのも、リソースとして取り込む方が
プログラムからのファイルの読み込みがない分、軽く感じると思うのですが・・・
001311
NGNG終了時も出来ればスパッと終わって欲しい。
グラフィックはメモリ食うし描画にも時間が掛かるから
できれば使わないに越した事は無いと思う。
使う時も出来るだけ使いまわししてデータの重複は避けたほうが
いいと思うよ。
それからDoEventsは入れないと長い処理で待ってる間
他の操作出来なくなるから入れたほうがいいと思う。
Windowsはプリエンプティブなマルチタスクだし。
それとgoogleで"VB 高速化"で情報集めてみたら?
0014デフォルトの名無しさん
NGNGそ、そうだったのか!
001511
NGNGいろいろ参考になると思われ。
http://www3.plala.or.jp/sardonyx/smart/
0017デフォルトの名無しさん
NGNG>
>そ、そうだったのか!
ナゼカワラタ
001811
NGNG・3秒以内に結果を返せる:呼ばなくてもよい。
・1分以内で返せる:ループの一番外側で呼ぶ。
・1分以上かかる:ループの一番内側で頻繁に呼ぶ。
て具合に処理の負荷と優先度を考慮して使い分けるといいと思う。
0019デフォルトの名無しさん
NGNG0020usami
NGNGどれくらいですか?
0021デフォルトの名無しさん
NGNGできるかな!?
プログラム (sjis2euc.c)
unsigned int sjis2euc(unsigned int sjis)
{
unsigned int hib, lob;
hib = (sjis >> 8) & 0xff;
lob = sjis & 0xff;
hib -= (hib <= 0x9f) ? 0x71 : 0xb1;
hib = (hib << 1) + 1;
if (lob >= 0x9e) {
lob -= 0x7e;
hib++;
} else if (lob > 0x7f) lob -= 0x20;
else lob -= 0x1f;
hib |= 0x80;
lob |= 0x80;
return (hib << 8) | lob;
}
説明
シフトJISコードは Microsoft漢字コードともよばれ、現在のところ最も広く使用されている8ビット系
漢字コードであり、パソコン上の標準漢字コードでもある。
一方、EUCコードはUNIX上で広く使われている8ビット系漢字コードであり、JISコードの第1バイト、
第2バイトの両方に0x80を加算したものを使用する。
0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG知れない。
でもそれなら変換処理自体をCで書いてDLL化した方がマシ。
0026デフォルトの名無しさん
NGNGオーバーフローとか負数の処理が面倒って言えば面倒か(汗
0027凸
NGNGunsigned intはLongで代用
& 演算子は And 演算子に置き換え(そのままだと文字列連結←ヨクヤル)
| は Or、0xは&H
0028Bee
NGNGPrivate Function sjis2euc(sjis As Long) As Long
Dim hib As Long, lob As Long
hib = (sjis \ (2 ^ 8)) And &HFF
lob = sjis And &HFF
If (hib <= &H9F) Then
hib = hib - &H71
Else
hib = hib - &HB1
End If
hib = (hib * (2 ^ 1)) + 1
If (lob >= &H9E) Then
lob = lob - &H7E
hib = hib + 1
ElseIf (lob > &H7F) Then
lob = lob - &H20
Else
lob = lob - &H1F
End If
hib = hib Or &H80
lob = lob Or &H80
sjis2euc = (hib * (2 ^ 8)) Or lob
End Function
どうかな?間違ってるかも。ていうか何故ですか?
0029デフォルトの名無しさん
NGNGいろんなコードを埋め込んでる。
他に、いい方法ってある?
0030デフォルトの名無しさん
NGNG俺なら NKF32.DLL とか使う
その方が確実だろ
0031デフォルトの名無しさん
NGNGこれをVBでやるにはどんなコーディングすればいいですか
0032デフォルトの名無しさん
NGNG関連付けされてないファイル(DLL、EXEとか)はどうすんの?
関連付けられてるアプリが印刷機能持ってない場合も想定できるよね
WAVとかさ
印刷機能持ってたとしても、印刷方法はアプリによってまちまちでしょ
画一的にどうこうできる問題じゃないと思うね
まず前提の要求からしておかしいので仕様から見なおせ
003332
NGNGちなみに一番近い回答と思われるのは
「APIのShellExecute()を、引数lpVerbに"print"を指定して実行」
かな
印刷できるものに関しては印刷してくれるはずだ
0034元VB 現D使い
NGNGいやまずDLLやEXEファイル印刷しようとはだれも思わんでしょ。
ちょっとひねた見方しすぎ。
>>31
ShellExecuteでいいんじゃないかな?宣言はAPIビュワーで見てね。
Call ShellExecute(Form1.hwnd, "print", "Book1.xls", "", _
"C:\", 0)
003534
NGNG結構やさしいじゃん。
0036VBMan
NGNGアイコンとテキストのわずかな隙間にクリックしてもアイコンが
アクティブにならない領域があるのですがこれは仕様ですか?
(テキスト囲むように出来る点線の上の部分あたり)
あるいは何かしらのプロパティの設定で回避できるものですか?
003732@同じく現D使い
NGNGいやこっちこそ連続カキコでスマソ
クライアントが「どんなファイルでも〜」って無茶言ってるなら
無理だって説明するための理由があった方がいいかなーと思って。
0038デフォルトの名無しさん
NGNGShellExecuteは"print"メソッドに対応してないのは普通に
開くだけだからまず安心。"open"もないのは何も起こらないし。
>>36
やってみたけど気になるほど開きはないけど?画面のプロパティ
のアイコンの間隔に影響されるのかな?
0039VBMan
NGNGエクスプローラとかだとその隙間はないんですよね。
だからマシンの設定とは関係ないかなと思ったんです。
わずか1px程度のラインなんだけど。
0040デフォルトの名無しさん
NGNGそこ押すほうが難しいと思われ
004131
NGNGありがとうです。
0042デフォルトの名無しさん
NGNG画像全体を表示するのではなく、画像の一部分だけ(例えば右下の部分だけ)表示するには
どうしたら良いのでしょうか。
0043デフォルトの名無しさん
NGNGイメージコントロールを2つ用意して、片方に画像全体を読みこむ
んで API の BitBlt で一部分だけ転送
004442
NGNGありがとう。やってみます。
0045デフォルトの名無しさん
NGNGDelphi6>VS.NET
0046やる気なし
NGNGage
0047デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNGFindWindowまたはGetActiveWindowでウィンドウハンドルを取得し、
[Enter]キーを押すメッセージをPostMessageします。
0051デフォルトの名無しさん
NGNG0052凸
NGNGMsgBox出てる時はTimerも止まってるからなあ。
MsgBoxに似たフォームを作った方が早いと思われ。
005350
NGNGだよね
005450
NGNG0055デフォルトの名無しさん
NGNGわらた
0056閑話休題
NGNGVB使いとしてちょっと悲しい…(涙
0057>49
NGNGでコールバック関数側で50さんの書いた処理を実行してやればオーケー。
これで「n秒後に自動で閉じるMsgBox」なんての作ったことがある。
でも面倒だから全然お勧めしない(笑
52 の方法がベストだと思うよ。
005850
NGNGVB5ならいいけど、VB6ってコールバックでこけない?
もうVBなんて終わりだよ
005957
NGNG俺の使ってる限りじゃ問題なかったけどなー
ひょっとしてSP4以降不具合出てるとか?
SP4が出る直前に前の職場辞めて、それ以降使ってないんだ
それにしても、ここVBスレなのにVB応援する意見少ないな(笑
悲しいとか終わりだとか、後ろ向きなのばっかりだ
0060超VB厨房
NGNG→ファイルリストボックスから選択したファイル
を拡張子の名前を変えて同じディレクトリにコピーする
のはどうやるんですか?
Dim DesFileName As String 'ファイルのコピー先
Dim SrcFileName As String 'ファイルのコピー元
SrcFileName = File1.Path & "\" & File1.FileName
DesFileName = File.Path & "\" ???
FileCopy SrcFileName, DesFileName
で???の部分がわかりません。
コピー元の〜.INIファイルを同ディレクトリ内に〜.OLD
のように名前を変えてコピーしたいのですが…
0061デフォルトの名無しさん
NGNGソフトって無いですか?
0062デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNG作れ。まともな言語(笑)ならそこそこ出来るもんだぞ。
あとcだとctagsというソフトとviというエディタで
ツリーじゃないがハイパーリンク感覚を味わえるぞ。
あと再帰を使うとツリーは破綻する。
>>59
コールバックって出来るんですか。知らなかった。
Callback用になにか特殊な宣言とか有って
それを使うと安全に呼ばれるようになる、とかですか?
そのままだと結構無理があるように思うが。特にタイマー系は。
>>62
蛇足だけど、かわってナニが出てきたっすか?
まさか会社潰れそうとかいう意味じゃないよね?
0064デフォルトの名無しさん
NGNGgtags + htags 使うと、ホントにソースをハイパーリンクを含んだ HTML
に変換できる。
http://www.tamacom.com/global/
呼び出し系列を書き出すのは、C だと関数ポインタを使った時点で破
綻する他、C++, Java だと継承でも厳しくなる。そーゆーコードを追う
場合には、適当なところでデバッガに落としてスタックとレースを見る
のが常套手段だが、VB だと似たような手は使えないの?
0065D使いβ
NGNGDelphiでは標準で拡張子を変える関数が付いてるから楽なんですけどね。
一応同名の関数を作ってみました。
Public Function ChangeFileExt(Filename As String, Ext As String) As String
Dim l1 As Integer
Dim l2 As Integer
l1 = Len(Filename)
l2 = InStr(1, Filename, ".")
ChangeFileExt = Left(Filename, l1 - (l1 - l2)) & Ext
End Function
これで、
X = ChangeFileExt("C:\path\file.ini", "old")
ってすると、Xには"C:\path\file.old"が入る。だけどディレクトリの
相対指定"..\file.ini"だと上手くいかない。
0066D使いβ
NGNGPublic Function ChangeFileExt(Filename As String, Ext As String) As String
Dim l1 As Integer
Dim l2 As Integer
Dim l3 As Integer
l1 = Len(Filename)
l3 = 1
Do
l2 = InStr(l3, Filename, ".")
If l2 = 0 Then Exit Do
l3 = l2 + 1
Loop
ChangeFileExt = Left(Filename, l1 - (l1 - l3 + 1)) & Ext
End Function
■ このスレッドは過去ログ倉庫に格納されています