VBプログラマ質問スレ(6.0以前) Part50
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/10/22(日) 20:39:53質問者は使用している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
http://www.google.co.jp/
※「まず自分で調べる」クセを身につけよう。
0357デフォルトの名無しさん
2006/11/23(木) 22:54:51ハイハイ、君の言う通りだね。
満足した?
0359デフォルトの名無しさん
2006/11/23(木) 23:22:10>>357
0360デフォルトの名無しさん
2006/11/24(金) 00:47:14>>304
>>307
どこかで見たクソソースだと思ったら
http://f57.aaa.livedoor.jp/~jeanne/bbs/faq.cgi?mode=al2&namber=8438
これか。
なんていうか、氏んだほうがいい。
0361313
2006/11/24(金) 05:34:411・imageで一個一個貼りつけ…現状。特に問題はないがダサい感じ
2・LoadResPicture…画像が崩れるのでダメ
3・imagelist…メモリ不足多発、EXEサイズ増大で良いこと無し
4・imagelistをアイコン10個ごとにインデックス分け使用…メモリ不足でコンパイル不可
3〜4はもちろんimageはすべて削除してる。2もほとんど削除し、転送用の数個のみ。
LoadResPictureで画像潰れないテクニックないすかねえ?
0362デフォルトの名無しさん
2006/11/24(金) 07:11:07EXEにリソース埋め込んだら、意味がないだろ・・・・
普通はリソース用のDLLを作る。
お前のようなバカは、リソースなんか使うなといういい例。
0363デフォルトの名無しさん
2006/11/24(金) 08:27:10このスレらしい光景だねw
>EXEにリソース埋め込んだら、意味がないだろ
なんでだよw
0364デフォルトの名無しさん
2006/11/24(金) 09:09:38本気で聞いてるのか・・・?
0365デフォルトの名無しさん
2006/11/24(金) 09:26:43コイツはドトネト板にも入たリアルキティ。
救いようがない。
ほっとけ。
0366デフォルトの名無しさん
2006/11/24(金) 13:16:12>>363 じゃ無いけど、おまえらのほうがよっぽど心配だよ。
0367313
2006/11/24(金) 15:59:23アイコンをカスタムリソースとして登録して、LoadResDataで
バイト型配列に取り込んで、テンポラリファイルに書き出してから
それを画像ファイルとして読み込む、というやり方もあるようだけど、
それじゃなんか釈然としない。
アイコン形式を使いたい動機は、PaintPicture一回でマスク付きで画像を描けるから。
一枚のでかい画像にアイコン画像全部並べて、マスク画像も作って
二枚の画像を持つのが無難なんだろうか。
PaintPicture二回必要になるけど、速度変わるかな?
0368デフォルトの名無しさん
2006/11/24(金) 22:50:521つずつ塗りつぶす色を変える場合、下のプログラムでは、どうすればいいのでしょうか?
宜しくお願いします。
Private Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As Long, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Private Declare Function PaintRgn Lib "gdi32" (ByVal hdc As Long, ByVal hRgn As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Const LOGPIXELSX = 88 ' Logical pixels/inch in X
Private Const LOGPIXELSY = 90 ' Logical pixels/inch in Y
Private Const ALTERNATE = 1 '交差したリージョンは塗らない
Private Const WINDING = 2 '交差したリージョンも塗る
Private Sub PaintRegion(Dest As Object, ParamArray P())
' PaintRegion
' 多角形を塗りつぶす関数
' 使用方法:
' PaintRegion 描画オブジェクト, X1, Y1 , X2, Y2, ...
' 描画オブジェクトには、Form, PictureBox, Printerなどが使用できます。
' 座標はTwips単位で渡します
' 塗りつぶし色は、描画オブジェクトのFillColorプロパティの値が使用されます。
0369368
2006/11/24(金) 22:52:09Dim hRgn As Long 'リ−ジョンのハンドル
Dim i As Long, nPoint As Long
Dim PPTX As Single, PPTY As Single
ReDim Point(0 To UBound(P))
nPoint = (UBound(P) + 1) / 2
PPTX = GetDeviceCaps(Dest.hdc, LOGPIXELSX) / 1440
PPTY = GetDeviceCaps(Dest.hdc, LOGPIXELSY) / 1440
For i = 0 To nPoint - 1
'ピクセルに変換
Point(i * 2) = CLng((P(i * 2) - Dest.ScaleLeft) * PPTX)
Point(i * 2 + 1) = CLng((P(i * 2 + 1) - Dest.ScaleTop) * PPTY)
Next i
Form1.Picture1.FillColor = RGB(255, 0, 0)
'塗りつぶし
Form1.Picture1.FillStyle = vbFSSolid
hRgn = CreatePolygonRgn(Point(0), nPoint, WINDING)
PaintRgn Dest.hdc, hRgn
DeleteObject hRgn
End Sub
0370368
2006/11/24(金) 22:52:48'正六角形
Form1.Picture1.Line (433, 0)-(0, 250), &HFF0000
Form1.Picture1.Line (0, 250)-(0, 750), &HFF0000
Form1.Picture1.Line (0, 750)-(433, 1000), &HFF0000
Form1.Picture1.Line (433, 1000)-(866, 750), &HFF0000
Form1.Picture1.Line (866, 750)-(866, 250), &HFF0000
Form1.Picture1.Line (866, 250)-(433, 0), &HFF0000
Form1.Picture1.Line (866, 750)-(433, 1000), &HFF0000
Form1.Picture1.Line (433, 1000)-(433, 1500), &HFF0000
Form1.Picture1.Line (433, 1500)-(866, 1750), &HFF0000
Form1.Picture1.Line (866, 1750)-(1299, 1500), &HFF0000
Form1.Picture1.Line (1299, 1500)-(1299, 1000), &HFF0000
Form1.Picture1.Line (1299, 1000)-(866, 750), &HFF0000
'塗りつぶし
PaintRegion Picture1, 433, 0, 0, 250, 0, 750, 433, 1000, 866, 750, 866, 250, 433, 0
PaintRegion Picture1, 866, 750, 433, 1000, 433, 1500, 866, 1750, 1299, 1500, 1299, 1000, 866, 750
End Sub
Private Sub Command2_Click()
End
End Sub
長くなったけど・・・
宜しくお願いします。
0371デフォルトの名無しさん
2006/11/24(金) 23:54:44Form1.Picture1.FillColor = RGB(255, 0, 0) 'これ
0372デフォルトの名無しさん
2006/11/25(土) 00:08:37動作確認してないけど原理はあってる筈だから適当に修正しな
動作すればいいレベルのコーディングだ
つーか↑の6角形の座標固定値か
Dim SX As Integer, SY As Integer
Dim PI As Single, HexR As Integer
Dim tmpX As Integer, tmpY As Integer
PI = Atn(1) * 4
HexR = 48
SX = 200: SY = 200
For i = -30 To 330 Step 60
fMain.Line (SX, SY)-(SX + Sin(i * (2 * PI / 360)) * HexR, SY + -Cos(i * (2 * PI / 360)) * HexR), vbBlack
Next i
tmpX = SX + Sin(30 * (2 * PI / 360)) * HexR
tmpY = SY + -Cos(30 * (2 * PI / 360)) * HexR
For i = 0 To 5
fMain.Line (tmpX, tmpY)-(SX + Sin((i * 60 + 90) * (2 * PI / 360)) * HexR, SY + -Cos((i * 60 + 90) * (2 * PI / 360)) * HexR), vbBlack
tmpX = SX + Sin((i * 60 + 90) * (2 * PI / 360)) * HexR
tmpY = SY + -Cos((i * 60 + 90) * (2 * PI / 360)) * HexR
Next i
tmpX = SX + Sin(-90 * (2 * PI / 360)) * HexR
tmpY = SY + -Cos(-90 * (2 * PI / 360)) * HexR
For i = 0 To 5
fMain.Line (tmpX, tmpY)-(SX + Sin((i * 60 - 30) * (2 * PI / 360)) * HexR, SY + -Cos((i * 60 - 30) * (2 * PI / 360)) * HexR), RGB(128, 128, 128)
tmpX = SX + Sin((i * 60 - 30) * (2 * PI / 360)) * HexR
tmpY = SY + -Cos((i * 60 - 30) * (2 * PI / 360)) * HexR
Next i
0373デフォルトの名無しさん
2006/11/25(土) 00:09:21fMain.FillColor = RGB(160, 160, 160)
Call ExtFloodFill(fMain.hdc, SX - 2, SY + 1, fMain.Point(SX - 2, SY + 1), 1)
Call ExtFloodFill(fMain.hdc, SX + 0, SY + 1, fMain.Point(SX + 0, SY + 1), 1)
Call ExtFloodFill(fMain.hdc, SX + 2, SY + 1, fMain.Point(SX + 2, SY + 1), 1)
Call ExtFloodFill(fMain.hdc, SX - 2, SY - 1, fMain.Point(SX - 2, SY - 1), 1)
Call ExtFloodFill(fMain.hdc, SX + 0, SY - 1, fMain.Point(SX + 0, SY - 1), 1)
Call ExtFloodFill(fMain.hdc, SX + 2, SY - 1, fMain.Point(SX + 2, SY - 1), 1)
fMain.FillStyle = 1
fMain.FillColor = &H0
0374デフォルトの名無しさん
2006/11/25(土) 00:11:32よく、新人の世話するけど、専門卒のソースが
いつもそんなクソソースだったりするw
0375デフォルトの名無しさん
2006/11/25(土) 00:52:060376デフォルトの名無しさん
2006/11/25(土) 01:00:370377313
2006/11/25(土) 06:04:03EXEサイズは極端に小さくなりはしたけど、
結局アイコンを一個一個imageコントロールで貼るのが最適という結果になってしまった。
ttp://www.h3.dion.ne.jp/~hohoi/DCK_test.lzh
0378デフォルトの名無しさん
2006/11/25(土) 09:15:20こいつをマンセーしたヤシらもやっぱりバカだった。
0379368
2006/11/25(土) 10:53:57レスありがとうございます。
そこを弄ると全体の色が変わるのですが・・・
1つずつ塗りつぶす色を変える場合はどうしたらいいのでしょうか?
>>372 -373
レスありがとうございます。
どこをどう修正したらいいのかわからないです。
ぐぐったら6角形の座標固定値のやり方があったので・・・
0380デフォルトの名無しさん
2006/11/25(土) 14:19:53GIFにするのとアイコンリソースにするの、どっちが得か?ってーのは直ぐに計算できるんではないかと。
ついでにGDIのBitBlt使いやがれ
0381デフォルトの名無しさん
2006/11/25(土) 16:12:42暇だったから多角形を塗りつぶすクラスを作ってみたよ。
っていうか、そんな読む気もおこらないウンココードは捨てた方がたぶん吉だよw
'######## Form1 ########
Private mPolygonDrawer As New cPolygonDrawer
Private mMouseDownPoint As Win32API.POINTAPI
Private Sub Form_Load()
Me.ScaleMode = vbPixels
With mPolygonDrawer
.hdc = Me.hdc
.NumOfAngle = 6
End With
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
mMouseDownPoint.X = X
mMouseDownPoint.Y = Y
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim r As Long
Dim red As Byte
Dim green As Byte
Dim blue As Byte
red = Rnd * 255
green = Rnd * 255
blue = Rnd * 255
Call mPolygonDrawer.SetFillColor(red, green, blue)
With mMouseDownPoint
r = Sqr((X - .X) ^ 2 + (Y - .Y) ^ 2)
Call mPolygonDrawer.Draw(.X, .Y, r)
End With
End Sub
0382381
2006/11/25(土) 16:13:42Declare Function CreateSolidBrush Lib "gdi32.dll" _
(ByVal crColor As Long) As Long
Declare Function CreatePen Lib "gdi32.dll" _
(ByVal fnPenStyle As Long, ByVal nWidth As Long, _
ByVal crColor As Long) As Long
Declare Function SelectObject Lib "gdi32.dll" _
(ByVal hdc As Long, ByVal hgdiobj As Long) As Long
Declare Function DeleteObject Lib "gdi32.dll" _
(ByVal hObject As Long) As Long
Declare Function Polygon Lib "gdi32.dll" _
(ByVal hdc As Long, ByRef lpPoints As POINTAPI, ByVal cPoints As Long) As Long
Public Type POINTAPI
X As Long
Y As Long
End Type
0383381
2006/11/25(土) 16:15:52Public hdc As Long
Private mDegreeOf1stPoint As Double
Private mLineColor As Long
Private mFillColor As Long
Private mPenHandle As Long
Private mBrushHandle As Long
Private mNumOfAngle As Integer
Private Const PI As Double = 3.1415923
Private Sub Class_Initialize()
Me.NumOfAngle = 3
Me.DegreeOf1stPoint = 90
Call SetFillColor(255, 0, 0)
Call SetLineColor(255, 255, 255)
End Sub
Private Sub Class_Terminate()
DeleteMyBrushIfNeed
DeleteMyPenIfNeed
End Sub
Public Property Let NumOfAngle(N As Integer)
If N > 2 Then
mNumOfAngle = N
End If
End Property
Public Property Let DegreeOf1stPoint(deg As Double)
mDegreeOf1stPoint = -deg
End Property
0384381
2006/11/25(土) 16:17:02Const PS_SOLID As Long = 0
mLineColor = red * 1 + green * &H100& + blue * &H10000
Call DeleteMyPenIfNeed
mPenHandle = Win32API.CreatePen(PS_SOLID, 1, mLineColor)
End Sub
Public Sub SetFillColor(red As Byte, green As Byte, blue As Byte)
mFillColor = red * &H10000 + green * &H100& + blue
DeleteMyBrushIfNeed
mBrushHandle = Win32API.CreateSolidBrush(mFillColor)
End Sub
Private Sub DeleteMyPenIfNeed()
If mPenHandle <> 0 Then
Win32API.DeleteObject (mPenHandle)
mPenHandle = 0
End If
End Sub
Private Sub DeleteMyBrushIfNeed()
If mBrushHandle <> 0 Then
Win32API.DeleteObject (mBrushHandle)
mBrushHandle = 0
End If
End Sub
0385381
2006/11/25(土) 16:17:39Dim pt() As Win32API.POINTAPI
Dim prevPenHandle As Long
Dim prevBrushHandle As Long
If hdc = 0 Then Exit Sub
pt = GetPointArray(X, Y, r)
prevPenHandle = Win32API.SelectObject(hdc, mPenHandle)
prevBrushHandle = Win32API.SelectObject(hdc, mBrushHandle)
Call Win32API.Polygon(hdc, pt(0), mNumOfAngle)
Call Win32API.SelectObject(hdc, prevBrushHandle)
Call Win32API.SelectObject(hdc, prevPenHandle)
End Sub
Private Function GetPointArray(X As Long, Y As Long, r As Long) As Win32API.POINTAPI()
Dim pt() As Win32API.POINTAPI
Dim i As Integer
Dim rad As Double
Dim deltaRad As Double
ReDim pt(mNumOfAngle - 1)
deltaRad = 2 * PI / mNumOfAngle
rad = 2 * PI * (mDegreeOf1stPoint / 360#)
For i = 1 To mNumOfAngle
pt(i - 1) = GetPoint(X, Y, r, rad)
rad = rad + deltaRad
Next
GetPointArray = pt
End Function
0386381
2006/11/25(土) 16:18:49Dim pt As Win32API.POINTAPI
pt.X = X + r * Cos(rad)
pt.Y = Y + r * Sin(rad)
GetPoint = pt
End Function
0387デフォルトの名無しさん
2006/11/25(土) 17:50:10メソッドを呼んでるところといい、そのクラスといい、
なかなかの腕だけど、なんの仕事してれば、そんな
描画系を思いつくの??
業務系の俺には、カスリもしない世界だったから、
ちょっと興味をもった。
0388デフォルトの名無しさん
2006/11/25(土) 18:40:31どこがだよw
0389デフォルトの名無しさん
2006/11/25(土) 19:00:18別に言うのは勝手だけど、お前の脳みそでは
どれだけ振り絞っても、>>381以上のソースは
書けないと思う。
>>388のソースに期待w
0390デフォルトの名無しさん
2006/11/25(土) 19:08:28見苦しい…
0391デフォルトの名無しさん
2006/11/25(土) 19:59:500392デフォルトの名無しさん
2006/11/25(土) 20:07:41貴方よりずっと莫迦な誰か他の人がメンテする事を考えて。
0393デフォルトの名無しさん
2006/11/25(土) 20:21:45> Private Sub Class_Terminate()
> DeleteMyBrushIfNeed
> DeleteMyPenIfNeed
> End Sub
軽く殺意が涌いた
0394デフォルトの名無しさん
2006/11/25(土) 20:36:16こういう上手くはないけど綺麗なコード書ける人と一緒に仕事したいもんだね。
0395デフォルトの名無しさん
2006/11/25(土) 21:49:30テラワロスw
なんで、誉める前に必ず「〜けど」って一言多いんだよw
うははw ネクラの臭いがぷんぷんするw
0396368
2006/11/25(土) 22:01:28レスありがとうございます。
早速、自分用にアレンジして使わせていただきますね。
ありがとうございます。
あと、ウンココードは捨てますねw
0397デフォルトの名無しさん
2006/11/25(土) 22:17:020398381
2006/11/25(土) 22:34:47バグがある(SetLineColorの処理とPIの値)のと、あと数値の型が適当だったり
ちゃんとキャストしてなかったりするのでその辺は修正してやってね。
>>397
やっぱりあんまりよくないのかな。
Win32のGDI関数ってほとんどやってことないから。。
Win9x特有の制限に引っかかる可能性があるとかないとかどこかで読んだ気もするけど。
>>387
ヘッポコのマイコンプログラマですよw
PCのアプリはここ数年.NETばっかりなんで、どうしてもVB.NETチックなコードになっちゃうね。
0399デフォルトの名無しさん
2006/11/26(日) 01:43:56<test hoge='ABC'/>
<test hoge='BCD'/>
<test hoge='CDE'/>
の中から、hoge属性値に C を含むものを列挙したい場合、
XPathではどのように記述するのでしょうか?
部分一致ではなく完全一致であれば、
/test[@hoge='C'] で取得できるのですが、
ワイルドカードはノード名や属性名には使えても、属性値には使えないようですし、
/test[contains(@hoge,'C')] もcontainsの部分で「不明な方法です」というエラーになります。
全ノードに対してループを回し、正規表現などで条件分岐すれば、結果的には問題有りませんが
XPathで出来ることならXPathでやりたいので、ご存じの方が居ましたらご教示ください。
0400デフォルトの名無しさん
2006/11/26(日) 12:56:07integer<long<single
と習ったんですが、single型って6桁を超えると
それ以下の桁が0に簡略化されますよね。
longに入らないぐらい馬鹿でかい数を使う場合で
頭から数えて6桁以下の数字を省略しないで計算したい場合
どうすればいいんでしょうか?
0401デフォルトの名無しさん
2006/11/26(日) 13:13:14有効桁数6桁”以下”なら、言っている通りsingleでいいと思うのだが
0402デフォルトの名無しさん
2006/11/26(日) 13:14:130403400
2006/11/26(日) 13:28:42例えば
12345678901234567890+12345678901234567890=24691357802469135780
を出したいと思った場合
longには入らないのでsingleを使うと
1.234567×10^19+1.234567×10^19
こんな感じで解釈されますよね。
すると結果が2.469134×10^19になりますよね、結果的に24691340000000000000
になっちゃって一番上と数値が変わってきちゃうじゃないですか、
これを何とかしたい、というわけなんです、正確に計算したいんです。
0404デフォルトの名無しさん
2006/11/26(日) 13:33:390405デフォルトの名無しさん
2006/11/26(日) 13:41:30精度も落ちるから巨大な配列を確保する等の事情が無ければdoubleを使ったほうが良い」
って聞いたけどVBだとどうなんだろう。
0406デフォルトの名無しさん
2006/11/26(日) 13:41:38とりあえず
> 頭から数えて6桁以下の数字を省略しないで計算したい場合
では、ないんだな ('A`)
とりあえず20ケタを扱える型はdecimal型だ
詳しくはヘルプを参照
逆質問だが、下のような計算も考慮に入れているのか?
0.12345678901234567890+12345678901234567890
この場合、誤差を最小に抑えるため数値上では小数以下の桁がほとんど丸められるわけだが、
これすらも正確に保ち下のような数値として扱いたいのなら、
12345678901234567890.12345678901234567890
vbの標準型では無理で、文字列型でAdd(String v1, String v2)みたいな演算を自分で仕組むしかないぞ
04074061 ◆qRy0pp8F66
2006/11/26(日) 13:43:55Private Sub Form_Load()
Dim d1 As Variant
Dim d2 As Variant
d1 = CDec("12345678901234567890")
d2 = d1
Debug.Print d1 + d2
End Sub
0408デフォルトの名無しさん
2006/11/26(日) 13:47:14VBというよりWindowsの動くx86のCPUでは、
基本的に80bitの拡張倍精度で演算される。
0409デフォルトの名無しさん
2006/11/26(日) 13:58:39テキトーな回答を下す前に。
>>400
人様に質問するのに「馬鹿でかい」とかあいまいな言葉を使うなよ。
そんなんでわかるわけないだろ、誰もエスパーじゃないんだから。
扱う数値は整数?実数?
実数の場合、必要な精度は?
扱う数値の範囲(最大値・最小値)は?
0410デフォルトの名無しさん
2006/11/26(日) 14:00:15詳しく書いてるように聞こえるけど、
実は何も考えてないだろ?
0411デフォルトの名無しさん
2006/11/26(日) 14:27:25Currency(綴りあやふや)は?
0412デフォルトの名無しさん
2006/11/26(日) 14:40:06少なすぎますです
0413デフォルトの名無しさん
2006/11/26(日) 14:46:19ふぅ・・・。で、お前は何がしたいの?
バカなら、もう来るなよ。みんなが真剣に考えたりするじゃないか。
真剣なら、自分で型をつくればいいだけの話だろ。
0414デフォルトの名無しさん
2006/11/26(日) 18:55:13>>399もお願いします。
0415デフォルトの名無しさん
2006/11/26(日) 21:01:36XPathのことはXMLのスレ(WebProg板にある)にいったほうがわかる人間がいると思う。
0416デフォルトの名無しさん
2006/11/26(日) 22:34:51参照が変わった場合、前の値はメモリから消えるのでしょうか?
Public str as String
のstrに
str = "A"
str = "B"
とした場合の"A"です。
何かのタイミングで一斉に消えたりするのでしょうか?
0417デフォルトの名無しさん
2006/11/26(日) 23:13:440418デフォルトの名無しさん
2006/11/26(日) 23:17:010419デフォルトの名無しさん
2006/11/26(日) 23:25:31何故そんな事を知る必要があるの?
0420デフォルトの名無しさん
2006/11/26(日) 23:28:55一.答えられない質問は無駄に罵倒せずスルー。無理するな。
三.回答する上で必須ではない情報をむやみに聞き返さない。
0421デフォルトの名無しさん
2006/11/26(日) 23:36:22俺はそんな糞みたいなルールには死んでも従わないね。
0422デフォルトの名無しさん
2006/11/26(日) 23:40:23四.荒らしは相手しない。
○ 回答者の心得
四.荒らしは相手しない。
0423339
2006/11/26(日) 23:54:28>>415
XMLスレも考えたのですが、COM版のMSXML2.DOMDocumentに限定した話をしたかったので
まずはこちらにきました。Web上で紹介されている関数が使えなかったりと、COM版の仕様が他とは違うようなので。
もうしばらくこちらで粘って、知ってる方が居ないようなら向こうに移動してみます。
ということで引き続きよろしくお願いします。
0424デフォルトの名無しさん
2006/11/26(日) 23:58:47○馬鹿の一つ覚えのようにテンプレをコピペしない
っていう項目が必要になりそうだな。
そうすれば>>422のようなスレになんの貢献もしない馬鹿を雪隠詰めにできるよw
0425デフォルトの名無しさん
2006/11/27(月) 00:01:210426デフォルトの名無しさん
2006/11/27(月) 01:58:39俺は"B"を代入した瞬間"A"は消えるもんだと思っている。
なぜなら、VC++で同じことをBSTRに対して行おうとするとそういう風になるから→きっとVBもそうだろうという短絡的発想。
0427デフォルトの名無しさん
2006/11/27(月) 02:03:330428デフォルトの名無しさん
2006/11/27(月) 02:06:51( <●> <●> )つ わかってます
わかってないことを証明する悪魔の証明はできないのはわかってます
0429デフォルトの名無しさん
2006/11/27(月) 02:12:52あなたはわかっていません
freeした直後にAはメモリ上に存在します
また直後ではAの上にBを置かれることはありません
OSの中まで追ってからにしなさい
0430デフォルトの名無しさん
2006/11/27(月) 02:14:14> OSの中まで追ってからにしなさい
> OSの中まで追ってからにしなさい
> OSの中まで追ってからにしなさい
( <●> <●> )
0431デフォルトの名無しさん
2006/11/27(月) 02:16:060432デフォルトの名無しさん
2006/11/27(月) 02:20:48むしろこっちだろ
> Aはメモリ上に存在します
> Aはメモリ上に存在します
> Aはメモリ上に存在します
0433デフォルトの名無しさん
2006/11/27(月) 02:46:10循環参照があった場合は開放されない。同じ参照カウンタ式のCOMと相性がいい。
0434デフォルトの名無しさん
2006/11/27(月) 02:49:55> 循環参照があった場合は開放されない。
('A`) ”されない”?
0435デフォルトの名無しさん
2006/11/27(月) 02:51:44>416 はVB6の話だろ?
Stringはオブジェクト型じゃないから代入は値のコピーが作られるだけだぞ
0436デフォルトの名無しさん
2006/11/27(月) 03:07:40そうだった。Stringは別だな。
433はClassの話だと思ってくれ。
0437デフォルトの名無しさん
2006/11/27(月) 08:46:34メモリ上"XYZDE"になって、"DE"はあるタイミングまで残る、って話ではないの?
"XYZ"の代わりに"1234567890"が入ったらメモリ上は"12345"になって、
新たなメモリ空間に続きの"67890"が入るように思うんだけど。
GCで前者の"DE"みたいなのが詰められ、後者みたいなのが
"1234567890"と連結されんでしょ?
0438デフォルトの名無しさん
2006/11/27(月) 09:10:42壮大な勘違いだな。
0439デフォルトの名無しさん
2006/11/27(月) 13:01:280440デフォルトの名無しさん
2006/11/27(月) 15:36:44メモリについて「無意味&無駄」としか考えられないようだから
ブービー厨とバカにされるんだよ
0441デフォルトの名無しさん
2006/11/27(月) 17:11:25VBが中で何やってたって、それを変更する事は出来ない。
つまり、お前が莫迦で阿呆という事だな。
0442デフォルトの名無しさん
2006/11/27(月) 17:55:06初期状態では、TextBox1, 3とCommand1だけ、Enabled=Trueです。
TextBox1の入力内容を検査して、OKならTextBox2のEnabledをTrueにした
上で、そこにFocusを移動させたいのですが、どうすればよいでしょうか?
TextBox1のValidateに
TextBox2.Enabled=True
TextBox2.SetFocus
と書いてもTextBox2にFocusが遷移しません。
0443デフォルトの名無しさん
2006/11/27(月) 18:34:47どうすればもこうすればも、そんな糞仕様のUIはナンセンスでしょ。ダメダメでしょ。
MSDN読んだ?
Validateっていつ発生するのよ。
矛盾することしようとしてるんだからうまくいくはずがない。
だいいち少しはユーザビリティってものを考えてくれよ。
0444デフォルトの名無しさん
2006/11/27(月) 18:36:58へっへっへ…
Enable=TrueにしたあとDoEvents書いちゃいなよ。
いいぜぇ、DoEventsは。
0445デフォルトの名無しさん
2006/11/27(月) 19:35:27しかし、諸刃の剣でもあるな。
0446デフォルトの名無しさん
2006/11/27(月) 21:01:160447デフォルトの名無しさん
2006/11/28(火) 08:48:40何ツンデレ?普通に当然のことじゃん。
0448デフォルトの名無しさん
2006/11/28(火) 09:01:23Dim hoge As Integer = 0
0449デフォルトの名無しさん
2006/11/28(火) 09:45:21vb.netさんでは宣言時に規定の初期値に初期化されます
やりたきゃやってみろ
0450デフォルトの名無しさん
2006/11/28(火) 09:49:47キミ、学校でも頭悪いとか、「○○って話が通じネーよな」とか良く
言われるでしょ?言われるでしょ?
0451デフォルトの名無しさん
2006/11/28(火) 09:51:04値型と参照型では違う。
参照型は初期化しないと、ぬるぽりますよ
0452デフォルトの名無しさん
2006/11/28(火) 13:56:35お前自身の事か?
0453デフォルトの名無しさん
2006/11/28(火) 18:57:12VB6.0でも、ユーザーコントロールを使えばクラスの継承が実現しない?!
空っぽのユーザーコントロールにメソッド書いて、継承時はそれを同じように
空っぽのユーザーコントロールに貼り付け。
画面やクラスでそのユーザーコントロールを動的に生成して、メソッドだけを呼べば
クラスの継承が実現してない??
0454デフォルトの名無しさん
2006/11/28(火) 19:22:46すくなくともそれじゃあね。
VBには目に見えないFormクラスがあって、全てのフォームはそれを継承していると
みなせる、って話ならわかるけど。
まあ当たり前だけどVB6でも継承そのものは可能なんだよね。
ただ言語レベルでサポートしてないだけで。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnprogvbnet/htm/chapter5.asp
0455デフォルトの名無しさん
2006/11/28(火) 20:23:28フォームの継承は、理屈はそうだけど、自分のメソッドも何もできない
からね〜
委任による継承かぁ〜・・・
実際は継承しているわけではなくて、継承チックに見えるように
ベースのクラスを呼んでいるんだよね
でも�d�d。
Implementsによるインターフェースの実装は知っていたけど、継承できない時点で
あんまり役にたたないよね。強いて使うなら、雛形として、このメソッドを使いなさい、かな〜
0456デフォルトの名無しさん
2006/11/28(火) 21:08:43■ このスレッドは過去ログ倉庫に格納されています