(*´д`*)アハァ… VB初心者質問スレ Part22
■ このスレッドは過去ログ倉庫に格納されています
0001HTML化チェック済み
NGNGPart12 http://pc3.2ch.net/tech/kako/1026/10266/1026642565.html
Part13 http://pc3.2ch.net/tech/kako/1029/10292/1029241786.html
Part14 http://pc3.2ch.net/tech/kako/1030/10309/1030947162.html
Part15 http://pc3.2ch.net/tech/kako/1032/10327/1032706491.html
Part16 http://pc3.2ch.net/tech/kako/1034/10343/1034302532.html
Part17 http://pc3.2ch.net/tech/kako/1036/10361/1036154952.html
Part18 http://pc3.2ch.net/tech/kako/1038/10381/1038103769.html
Part19 http://pc3.2ch.net/tech/kako/1039/10398/1039859691.html
Part20 http://pc2.2ch.net/tech/kako/1041/10418/1041879465.html
Part21 http://pc2.2ch.net/test/read.cgi/tech/1044028945/
VB.net関連スレ
【老若】VB.net質問スレ【男女】 (Part2)
http://pc2.2ch.net/test/read.cgi/tech/1043629429/
心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調べてみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
五.下ネタもたまにならOK。
リストボックスで代用すればいいよ。同時スクロールはAPI使うけども。
API使えないんなら、やめとき。
0530デフォルトの名無しさん
NGNG>>527
おぉなるほど!
…って残念ながら無理でつ
業務系アプリだしそんな許可おりないのさ。
なんとかVB6で…((((((^_^;)
>>528
ん〜結局は選択した時点でそのボックスがどのデータを指しているかを
知りたいのです。
Grid1画面分で表示できる件数ならなんとかなるけど、それ以上の件数で
スクロールバーで上下させられるとどうしようもなくてΣ(゚Д゚;≡;゚Д゚)アワアワ
FlexGridには「今表示しているデータの範囲」を知る手段が無いですよね?。
0532デフォルトの名無しさん
NGNGDim vbs As Object
Set vbs = CreateObject("MSScriptControl.ScriptControl")
vbs.Language = "VBScript"
vbs.ExecuteStatement "aaa=1"
vbs.ExecuteStatement "bbb=2"
vbs.ExecuteStatement "ccc=3"
Label1.Caption = vbs.eval("aaa + bbb")
Label2.Caption = vbs.eval("aaa + ccc")
'過去ログから引っ張り出してきた、、、
0533デフォルトの名無しさん
NGNGvbs.ExecuteStatement "aaa=" & CStr(a)
などで動的に数値は変えられるし、
Microsoft Script Control 1.0 の方を使っても作りやすいかも。
#Win95でうごいたっけかな、コレ
0534デフォルトの名無しさん
NGNGありがとうございました。また質問ですが、RDBとは?なんでしょうか?
ヘルプを見てみましたがよくわかりませんでした。よろしければ教えてくだ
さい。
あと、WINSOCKでlistenメソッドで接続待ちをしていれば、特にイン
ターネットに接続する処理などをしなくても接続する事ができるのでしょう
か?
0535デフォルトの名無しさん
NGNG関数や変数を使うにはどうすればよいのでしょう?教えて!!
0536デフォルトの名無しさん
NGNG1 RDB Relational Data Base
2 試してみればいいだけの話でわ?
0537デフォルトの名無しさん
NGNGインターフェースを用意する。
0538デフォルトの名無しさん
NGNGstrTmp = "あ1い"
strTmp = StrConv(strTmp,vbFromUnicode)
strTmpEven = LenB(strTmp,3)
strChar = Right(strTmpEven,1)
この場合にstrCharに1文字読み込んで
最後が全角文字か判定したいのですが
strCharに"1"が入ってきません
Right関数をしようした場合の1文字ってのは
文字コード変換しても2バイト分取られるものなんですか?
環境はVB6,win2000です。
0539デフォルトの名無しさん
NGNG(゚Д゚)ハァ?
0540デフォルトの名無しさん
NGNGなんかものすごい勘違いが含まれてる気がするがw
Debug.Print LenB(StrConv("A",vbFromUnicode))
Debug.Print LenB(StrConv("あ",vbFromUnicode))
この違いを考えてみれ。
0541デフォルトの名無しさん
NGNGインターフェイスを用意するというのがよく分かりません。できれば
具体的に教えて頂けるとうれしいです。
0542デフォルトの名無しさん
NGNGやりたい事は
LenB(Right("あ1い", 1))
だけちゃうのん?
0543デフォルトの名無しさん
NGNGLenB(Right("あ1い2", 1))
0544538
NGNG>>540
>>542
激しくタイプミスでした
strTmp = "あ1い"
strTmp = StrConv(strTmp,vbFromUnicode)
strTmpEven = LeftB(strTmp,3)
strChar = Right(strTmpEven,1)
だった
0545デフォルトの名無しさん
NGNGあんた本当に >>540 見てる?
0546デフォルトの名無しさん
NGNG「二文字目」を取りたいなら "あ1い" -> "1", "abcde" -> "b"
strChar = Mid(strTmp,2,1)
「SJIS3バイト目」を取りたいなら "あ1い" -> "1", "abcde" -> "c"
strChar = StrConv(MidB(StrConv(strtmp, vbFromUnicode), 3, 1), vbUnicode)
0547デフォルトの名無しさん
NGNGあんた >>538 見てる?
0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNGあんたぬるぽ?
0550538
NGNGdim hoge as String
hoge = "aあ"
hoge = StrConv(hoge,vbFromUnicode)
debug.print LenB(Right(hoge,1))
'Sjisに変換した文字列より1文字取得する
'1文字なので"あ"を取得しLenBに渡す
'結果は2
hoge = "あa"
hoge = StrConv(hoge,vbFromUnicode)
debug.print LenB(Right(hoge,1))
'Sjisに変換した文字列より1文字取得する
'1文字なので"a"を取得しLenBに渡すのかと思ったら
'Rightは"a"を返さず2バイト返している
'結果は2
hoge = "a"
hoge = StrConv(hoge,vbFromUnicode)
debug.print LenB(Right(hoge,1))
'Sjisに変換した文字列より1文字取得する
'1文字しか無いからか"a"を取得しLenBに渡している
'結果は1
ていうことなんだけど
0551デフォルトの名無しさん
NGNGもしかして、Right が SJIS を考慮してくれると思ってるの?
Right は Unicode を想定してるから強制的に終端 2 byte を返すよ。
最後の例で 1 になってるのは、単にもともと Right にかける前の文字列長が
1 byte だから。
0552デフォルトの名無しさん
NGNGこんな感じ。
'----呼出元 Module1
Public TEST2B As String
Public Sub Main()
Dim TEST3 As New Class2
TEST2B = "ヅら"
Set TEST3.C1 = New Class1
TEST3.TEST
End Sub
Public Sub TEST1B()
MsgBox "ふが!!"
End Sub
0553デフォルトの名無しさん
NGNG'----呼出元 Class1
Public Sub TEST1()
Module1.TEST1B
End Sub
Public Property Get TEST2()
TEST2 = Module1.TEST2B
End Property
'----呼出先 Class2
Public C1 As Object
Public Sub TEST()
C1.TEST1
MsgBox C1.TEST2
End Sub
普通は呼出元の値→呼出先のオブジェクトのプロパティに設定
呼出元のプロシージャ呼出→呼出先のイベントに反応とかする方が自然かな。
0554551
NGNG> 最後の例で 1 になってるのは、単にもともと Right にかける前の文字列長が
> 1 byte だから。
つまり、Len(Right("123", 5)) が 5 ではなく 3 になるのと同じ事。
0555550
NGNGあー文字コード変換しようが
Rightは1文字 = 2byteで処理するってことね
一度Unicodeに戻してからRightして
帰って来た値をsjisにしてLenBしたら出来たよ
サンクス
0556デフォルトの名無しさん
NGNG激しく意味ねー
>>540 はどうなったんだよ
0557デフォルトの名無しさん
NGNG0558デフォルトの名無しさん
NGNG( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←>>549
0559550
NGNGDebug.Print LenB(StrConv("A",vbFromUnicode))
Debug.Print LenB(StrConv("あ",vbFromUnicode))
が1と2を返すのは最初から解ってるんだよ
SJISでRight関数使っても正確に1文字取れない
RightBではバイトで取得する、オレはバイト単位では受け取りたくない
Unicodeに戻さないとRightは正常に動作しない仕様になっている
SJISの状態で1文字取得できる関数が有ったら教えてくれ
0560デフォルトの名無しさん
NGNG????
asc(Right(str, 1))
が0〜255なら半角
それ以外なら全角じゃないの?
#半角全角という分け方もアレだが。
0561デフォルトの名無しさん
NGNG> Debug.Print LenB(StrConv("A",vbFromUnicode))
> Debug.Print LenB(StrConv("あ",vbFromUnicode))
> が1と2を返すのは最初から解ってるんだよ
なら最初から書け。
> SJISの状態で1文字取得できる関数が有ったら教えてくれ
文字列を SJIS で持っていなければならない状況というのがわからんのだが・・・。
しかし、「関数」 だの 「教えてくれ」 だの言うあたり、自分で調べたり作ったりする
つもりは全く無いのね。
1 バイト目が &H81 〜 &H9F または &HE0 〜 &HFC
2 バイト目が &H40 〜 &H7E または &H80 〜 &HFC
これで判定しなさい。
0562デフォルトの名無しさん
NGNG0563550
NGNG> なら最初から書け。
的はずれな質問して何怒ってるの?
>文字列を SJIS で持っていなければならない状況というのがわからんのだが・・・。
バカかおまえは?
"dD"とか全角半角混在してる文字列からバイトで取得するのにどうやってUnicodeで取得するんだ?
Debug.print LenB("あ")
Debug.print LenB("A")
として違う値が取れるのか?
> しかし、「関数」 だの 「教えてくれ」 だの言うあたり、自分で調べたり作ったりする
> つもりは全く無いのね。
お前は共通に有ったりしても自分で関数を作るのか?
用意されている物があればそれを使うのが普通
もう解決してるからおまえは書かなくていいよ(ワラ
0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNG申し訳ないが、ascを使って正しく一文字返さないコードをだしてくれないでしょうか?
0567デフォルトの名無しさん
NGNG551 も書かなきゃ良かった。
0568デフォルトの名無しさん
NGNG> > なら最初から書け。
>
> 的はずれな質問して何怒ってるの?
そりゃ怒るでしょ。
ひょっとしてあんた、礼儀を知らないヒッキーさんですか?
0569デフォルトの名無しさん
NGNG0570デフォルトの名無しさん
NGNG>>544 を見れば、何でこんなアフォな話になったかわかる。
0571デフォルトの名無しさん
NGNGDeclare Function GetCurrentThread Lib "kernel32" () As Long
Declare Function GetThreadPriority Lib "kernel32" (ByVal hThread As Long) As Long
Declare Function SetThreadPriority Lib "kernel32" (ByVal hThread As Long, ByVal nPriority As Long) As Long
Public Const THREAD_PRIORITY_HIGHEST = 2
ソース
Dim Get_TH As Long
Dim Get_PR As Long
Dim Set_TH As Long
Dim Set_PR As Long
Dim Set_RC As Long
Get_TH = GetCurrentThread
Get_PR = GetThreadPriority(Get_TH)
Set_TH = Get_TH
Set_PR = THREAD_PRIORITY_HIGHEST
Set_RC = SetThreadPriority(Set_TH, Set_PR)
実行後、タスクマネージャみても上がってないょ(´・ω・`)
MSDN見ると
Windows NT: このハンドルは、THREAD_SET_INFORMATION アクセスを持っていなければなりません。
って書いてあるんだけど、これに関して調べても見つからないょ・・・
解かる人いませんか?
0572571
NGNG0573デフォルトの名無しさん
NGNGスレッドを作るときに設定できるアクセス権の話?
既に存在するスレッドのアクセス権を変更できるかは知らんけど。
0574デフォルトの名無しさん
NGNGスレッドって、マルチタスクOSで言うところのスレッドのこと?
それとも、BBSのスレッドのこと??
0575デフォルトの名無しさん
NGNGお前ここにスレ立てるときアクセス権なんぞ設定したか?
まぁ、権利関係は確かに存在するか・・・。
0576デフォルトの名無しさん
NGNG釣れた(w
(^▽^)
0577デフォルトの名無しさん
NGNG釣れた(w
(^▽^)
0578デフォルトの名無しさん
NGNG釣れた(w
(^▽^)
0579デフォルトの名無しさん
NGNG/ ノ ▲ ヽ  ̄ ̄
.i´ i´ ■ ∧ ヽ
i i ■ .i.●i ;::;:;:;:; ヽ
i i ■ ∨ノ ,-、 ;:;:;/ノヾヽ ;:;:i
i `、 ‐- ー ・ ;:;:;《 | | ) ;:;:;:;::i
i ´´ -‐ ‐ ・ ;:;:;:《 | | ) :;:;:;:;:;)
i i ■ ∧ヽ `‐´ ;:;丶ヽノノ :;:;:;::i
.i i .■ i.●i ;:;;:;:: ;:;:;i
i、 i ■ ∨ ノ
ヽ `ゞ .▼ / _
ヽ、 ‐‐‐‐‐‐‐‐‐‐、____,,,,,,,,,,,,,,,,,,,,,,,,,----‐‐‐ヽ
ニキータ
0580516
NGNGスクリプトコントロールはつかったことないので、ためしてみようかとおもいます。
0581540
NGNGま、風物詩と思えば腹も立たんか。
>>571
漏れが昔書いたソースだと
hThread = GetCurrentThread()
ret = SetThreadPriority(hThread, THREAD_PRIORITY_HIGHEST)
こんなんで動いてるな。
hProcess = GetCurrentProcess()
ret = SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS)
こーいうのも動いてる。Win2Ksp3+VB6sp5。
0582デフォルトの名無しさん
NGNG貼り付ける方法 ご存知の方いらっしゃいますか
また DHtmlEdit の使い方が説明されているHPも
お願いします
0583デフォルトの名無しさん
NGNG日付時間を指定してそのUnixTimeを作ったりしたいのです。
2chのスレッドIDの決定もこれですよね。
単に秒数を求めればいいのではと思ったのですが
うるう年とかいろいろあってもうどうしたらいいやら、です。
0584583
NGNGVB6からUnixTime(1970/01/01 から数えた秒数)を求めたり
UnixTimeから日時時間を求めたりしたいのです。
(要は Date型<->UnixTime の相互変換関数が作りたい)
0585デフォルトの名無しさん
NGNGDateDiffで調べれ
0587デフォルトの名無しさん
NGNG川o・-・)ノ <先生!こんなのがありました!
__/ / /
\(_ノ ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||
...|| ̄ ̄ ̄ ̄||
http://saitama.gasuki.com/saitama/
0588デフォルトの名無しさん
NGNGtime_t ですよね。
わたしならCでDLL作るかな。
0589ひきプロ
NGNG'time_tから文字列へ変換
Public Function GetTimeString(time_t As Long) As String
Dim t As Long, leap As Long, year As Long, month As Long, day As Long, hour As Long, minute As Long, second As Long, s As String, i As Long
Dim m(1 To 12) As Long '各月の日付を入れる
m(1) = 31: m(2) = 28: m(3) = 31: m(4) = 30: m(5) = 31: m(6) = 30: m(7) = 31: m(8) = 31: m(9) = 30: m(10) = 31: m(11) = 30: m(12) = 31
t = time_t
leap = Int(((t / 31536000) + 1) / 4) 'うるう年でずれた日数の計算
year = ((t - leap) \ 31536000) '年の計算
year = year + 1970 '1970年から足す
day = ((t Mod 31536000) \ 86400) - leap '日の計算
hour = (t Mod 86400) \ 3600 '時間の計算
minute = (t Mod 3600) \ 60 '分の計算
second = (t Mod 60) '秒の計算
If (year Mod 4) = 0 Then '2月の日数を計算
m(2) = 29
If (year Mod 100) = 0 Then
m(2) = 28
If (year Mod 400) = 0 Then m(2) = 29
End If
End If
0590ひきプロ
NGNGFor i = 1 To 12
If day > m(i) Then
day = day - m(i)
Else
month = i
Exit For
End If
Next
hour = hour + 9 'UTCから日本の時間分足す
s = year & "年" & month & "月" & day & "日 " & hour & ":" & minute & ":" & second
GetTimeString = s
End Function
0591デフォルトの名無しさん
NGNGなんでお前はそんなクソ関数作るんだ?
?datediff("s",#1970/01/01 00:00:00#,#1970/01/02 00:00:00#)
?dateadd("s",86400,#1970/01/01 00:00:00#)
0592デフォルトの名無しさん
NGNGこれでいいんじゃなかったっけ。
0593ひきプロ
NGNG0594デフォルトの名無しさん
NGNGとあるDLLの中の関数の名前一覧を知る方法ってないでしょうか?
VB用の関数仕様の資料はあるのに「その関数が入っているDLLの名前」だけが
書いてない…。
0595デフォルトの名無しさん
NGNG0596594
NGNG有難うございましたm(_ _)m
ついでにもうひとつ質問なのですが
aaa.DLL内のbbbという関数について、
標準モジュールxxxで
Public Declare Function ccc Lib "aaa" Alias "bbb" _
(ByVal 引数 As String, _
) As Long
と記述し、フォームのコードで
Ret_Stats = xxx.ccc(引数)
として呼び出しているのですが、いざ実行すると「ファイルが見つかりません。"aaa"」と
エラーが出てしまいます。
一応aaa.DLLは C:\Program Files\Microsoft Visual Studio\VB98 に放り込んであるのですが
DLLってどこか特定の場所にある必要があるんでしょうか?
0597デフォルトの名無しさん
NGNG環境変数Pathにないパスなら、Declare宣言でフルパス指定しる。
Public Declare Function ccc Lib "C:\Program Files\Microsoft Visual Studio\VB98\aaa.dll" Alias "bbb" _
(ByVal 引数 As String, _
) As Long
パスが通っているフォルダに配置されているなら、
Public Declare Function ccc Lib "aaa" Alias "bbb" _
(ByVal 引数 As String, _
) As Long
で問題なし。
0598571
NGNGお返事ありがとぅ
でも、そのソース組み込んだEXE実行しても
タスクマネージャの基本優先度は通常のままだょ・・・
も う だ め ぽ (´つω・`)
0599デフォルトの名無しさん
NGNGタスクマネージャでの優先度表示はプロセスの優先度だったよーな…。
スレッドの優先度を見たいならSpi++でも使ってみて。
プロセスの優先度がまずあって、その中でスレッドの優先度が細分化
されてる、ってな感じだったかと思う。
0600デフォルトの名無しさん
NGNGsp"y"++
>>569
ガッ
0601571
NGNG単に
HIGH_PRIORITY_CLASS
の初期値がダメなだけでした・・・
答えてくれた方々、本当にありがとうございました
0602デフォルトの名無しさん
NGNG開発環境 → Systemディレクトリ
EXE実行 → EXEファイルと同じ場所
Declare の DLL名 のところはファイル名だけでOK
0603596
NGNGありが�d。
やっぱそーだよね。
でも漏れのPCだと、それやっても
同じエラーになるんだよ…なんでだろ?
0605デフォルトの名無しさん
NGNGなぬぅ
資料によるとVB4で作ってるらしいのだが…。
(こっちの開発PCはVB6)
「参照設定」で指定しようとしても
「指定されたファイルへの参照は登録できません」
て出るし。
てことは、八方塞がり!?
0606602
NGNGもし DLLのソースがあるのなら再度コンパイル
無かったら REGSVR32.EXE でレジストリから消してから再度登録?
REGSVR32.EXE の 使い方は Windowsディレクトリ を REGSVR32.EXE で検索して実行してみぃ
ちなにに REGSVR32.EXE は ActiveX をレジストリに登録解除するも
0608デフォルトの名無しさん
NGNG下のような感じで、AddDataが呼ばれるたびに
構造体の動的配列の要素数を1つ増やしてデータを入れていくということをやりたいのですが、
このままだと、u(1)から値が入るようになってしまいます。
u(0)から値を代入していくにはどのようにすれば良いのでしょうか?
Type USER
x As String
y As String
End Type
Dim u() As USER
Public Sub InitData()
'初期化
ReDim u(0) As USER
End Sub
Public Sub AddData(s1 As String,s2 As String)
ReDim Preserve u(UBound(u) + 1) As USER
u(UBound(u)).x = s1
u(UBound(u)).y = s2
End Sub
String型だと初期化のところでu=Split("")とやれば空の配列が作れると言うのを
ネット上で見たのですが、構造体の場合はどうすればよいのでしょうか?
よろしくお願いします。
0609デフォルトの名無しさん
NGNGプロシージャ内に静的変数入れて、条件分けしる。
0610デフォルトの名無しさん
NGNGとやれば、一応空(のように見える)配列ができるぞ。
あんまし意味無いけど…。
0611デフォルトの名無しさん
NGNG買うならいくらぐらいですか?
0612デフォルトの名無しさん
NGNG分かっていると思うけど配列の大きさは1だね。
u(-1)としてアクセスできる。
0614デフォルトの名無しさん
NGNGType USER
x As String
y As String
End Type
Dim u() As USER
Dim f As Boolean
Public Sub InitData()
'初期化
ReDim u(0) As USER
f = False
End Sub
Public Sub AddData(s1 As String, s2 As String)
If f Then
ReDim Preserve u(UBound(u) + 1) As USER
End If
u(UBound(u)).x = s1
u(UBound(u)).y = s2
f = True
End Sub
0615デフォルトの名無しさん
NGNG構造体じゃなくてクラスにしてコレクション使うって手もあるけどな。
0616608
NGNGみなさん親切にありがとうございました。
0617デフォルトの名無しさん
NGNG買わなくても手に入る場合がある。
0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNGイベントドリブンの基礎です。
0621デフォルトの名無しさん
NGNGつう(r
0622デフォルトの名無しさん
NGNG>>618のフォローが理解できないなら(略
0623デフォルトの名無しさん
NGNGなんてやつですか?
0624デフォルトの名無しさん
NGNGイベントドンブリの基礎です。
C丼( = オブジェクト指向イベントドンブリ言語)で勉強してください。
0625デフォルトの名無しさん
NGNG16進数のことがいまいち分からなく
a * 256
を十六進数であらわすと
a and &hFF
でいいのでしょうか。
0626デフォルトの名無しさん
NGNGDebug.Print で、お試しあそばせ
0627デフォルトの名無しさん
NGNG0628ひきプロ
NGNG■ このスレッドは過去ログ倉庫に格納されています