マンガでよめる痔のこと・薬のこと

VB6のプロジェクトを開くたびに、

ソースコードの管理
このプロジェクトをVisual Source Safeに追加しますか?

のメッセージが表示されます。
表示しないようにできるのでしょうか?

そもそもVisual Source Safeとは何をするものでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

> 表示しないようにできるのでしょうか?



VBのメニューより
[アドイン]→[アドイン マネージャ]
アドイン マネージャの[ソースコードの管理]を選択し
ロード方法のチェックを全て外してみてください。
    • good
    • 1

>表示しないようにできるのでしょうか?


こっちはすんません。忘れました。

>そもそもVisual Source Safeとは何をするものでしょうか?
プログラムソースの履歴を管理するソフトです。
プロジェクトでは普通、複数名でコーディングを行うので、自分だけがソースを更新するわけではありません。
特に、共通関数(オブジェクト指向ではクラスなど)などは複数のプログラマーが更新をする場合もあります。そのため、コーディングのミスやテストの結果によっては、更新する前のソースに戻す作業も発生します。そのための履歴を管理するソフトが必要となります。
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qこのプロジェクトを SourceSafe に追加しますか?」

VB6エンタープライズを使用しているのですが、ソースを保存した後に、「このプロジェクトを SourceSafe に追加しますか?」というメッセージが表示され、私はわからないのでいつも「いいえ」ボタンを押しているのですが、SourceSafeは何をするものでしょうか?
「いいえ」ボタンでよかったのでしょうか?

プログラマーを目指しているのですが、SourceSafeに関する本などで勉強したいので、良書などご存知でしたらご教授ください。

Aベストアンサー

正しくは Microsoft『Visual SourceSafe』(略称: VSS) で、ドキュメントファイルのバージョニングの為のものです。
※“ファイル”の形であれば、どんなものも、これで世代管理可能な筈

Visual Studio ツールってなフォルダに入ってると思いますが。
※但し、インストールの際に、“完全インストール”した場合…だったかな?

Qfrxファイルの役目

VB6の開発環境で、拡張子がfrxというVisual Basic Form Binary Fileが出来ますが、何に使われるのですか?
2台のPCで同じプロジェクトの開発をしている際、frmファイルだけをコピーすると、VBでファイルを開く時エラーになることがあります。
frxファイルも同時にコピーする必要があるのでしょうか?
2台のPCのOSは、Win2000とWinXP ProSP2で、XPから2000へコピーした際は問題なく、2000からXPへコピーした際のみ、上記の問題が発生します。
よろしくお願いします。

Aベストアンサー

「ほげ.frm」
「ほげ.frx」
があったとします。

「ほげ.frm」をテキストエディタで開いてみてください。
どこかに「ほげ.frx」の記述が存在していたら、その「ほげ.frm」は「ほげ.frx」を必要とします。

主に、拡張コントロールのプロパティ情報が記載されています。
W2K←→XPsp2
のコピーに関しては、本来どちらもいけると思うのですが、、、
VBのサービスパックや、何かの拡張コントロールのサービスパックが異なっていたりしませんか?

QVB6 ClassにてEnum(列挙型)のうまい使い方

へっぽこPGです。
今まで私の質問にご回答を頂いた方々、改めてお礼申し上げます。

最近VB6でActiveXDLLにて、DLLを作り始めました。
Classについて勉強を始めたばかりで、
実現できそうな機能と実現できない力量のギャップに苦労しています。

さて、いろいろと便利なDLLを作ってやるぞ!と意気込み、
ExeからDLLを参照してプロパティに値を設定する時に、
インテリセンスが出るようにしたく、ClassにEnum(列挙型)を使うやり方を見つけましたが・・・・。

その先困ってます。

VB6でデバッグをしているわけですが、
Class(Dll)とExeは別プロジェクトで生成しており、
Dllはバイナリ変換、デバッグはExeを実行するように設定済です。
これでActiveXDLLプロジェクトで「開始」をすると、Exeを実行してくれます。

Exeのプロジェクトから、
「開始」・ステップ実行して確認しましたが、
正常に動作しているようです。(記述した文がそれぞれ機能しているという意味で)

ActiveXDLLプロジェクトから、
「開始」後、「停止」をして、Dllを上書きしようとすると、
「書込みできません。"~DllのPath~"」とMsgboxのBouttonのでいうvbMsgBoxStyle=vbCriticalの形式で、
Msgboxが表示されてしまいます。
どうやらExeがDLLを離していないのでしょうか?
もちろん列挙型を設定していないDLLの場合ですと、上書きは可能です。
(他にも上書きできないパターンを見つけましたが、話が脱線するので割愛します。もしご存知でしたら、併せて教えて頂くと幸いです。)


困っている点としては、
1 デバッグする上で、Dll(書出)⇔Exe(開始)を繰り返したく、都度プロジェクトを閉じて、開いてDLL書出しするのは、非効率。
(DLLを書き出して、インターフェースを変えてしまえば、Exeはリコンパイルが必要なので、あんまり意味ないかも・・・とも)

2 読み取り専用プロパティを作って、Initializeで初期値を設定してしまう方法を考えたが、非常にかっこ悪いし、運用が大変。

3 1を我慢したとしても、作成したDLLはCOM+に登録して、WebサーバでASPから使用するつもりなので、DLLを離してくれないと、無駄なプロセス動き続けてしまう(?)→未テスト

です。


いろいろとツッコミどころがあるかもしれませんが、
忌憚なくご意見下さい。


---Class-(test_Class)----
'列挙宣言
Public Enum Chiiki
Hokkaidou = 0
Aomori = 1
Akita = 2
End Enum

'プロパティ値を格納しておく変数
dim aaa as integer

'プロパティでEnum宣言した型を引数に指定します、
Public Property Get Shusshin() As Chiiki
Shusshin = aaa
End Property
Public Property Let WindowState(ByVal NewValue As Chiki)
aaa = NewValue
End Property
---Class-End--------------------

---Exe-----------------
'Classは参照設定にて
'参照設定にしている理由としては、インテリセンスでロパティ・メソッド等を利用したいから。開発側の怠慢?

Sub a
'Class宣言
Dim a_class as test_Class
Set a_class = New test_Class

'プロパティ設定 ↓ = と打つと、Classの列挙で設定した値がプルダウン
a_class.WindowState = Aomori

'プロパティ値表示(処理自体に意味無し)
'「1」 と表示される
Msgbox a_class.WindowState

'Class開放
Set a_class = nothing

End sub
---Exe-End----

へっぽこPGです。
今まで私の質問にご回答を頂いた方々、改めてお礼申し上げます。

最近VB6でActiveXDLLにて、DLLを作り始めました。
Classについて勉強を始めたばかりで、
実現できそうな機能と実現できない力量のギャップに苦労しています。

さて、いろいろと便利なDLLを作ってやるぞ!と意気込み、
ExeからDLLを参照してプロパティに値を設定する時に、
インテリセンスが出るようにしたく、ClassにEnum(列挙型)を使うやり方を見つけましたが・・・・。

その先困ってます。

VB6でデバッグをし...続きを読む

Aベストアンサー

VB6が DLLを離していないためですよ
VB6のインスタンスが2つある状態なのですよね
VB6-ActiveXとVB6-TextExeが起動している状態で
VB6-TestEXEが参照設定のため DLLをつかみっぱなしになっています
DLLが開発途上なら プロジェクトグループで開発したほうが良いと思います
DLLプロジェクトとテスト用EXEプロジェクトを1つのグループにして開発orデバッグします

どちらでも良いですからプロジェクトを開いて
ファイル > プロジェクトの追加 で他方のプロジェクトを追加します
テスト用EXEプロジェクトに参照設定をして開発します

DLL側の修正はそのままコードウィンドウを開いて編集します
DLLファイルの作成し直しは
プロジェクトウィンドウで DLLプロジェクトをアクティブにして
ファイルメニューからDLL作成をします

テストEXEのデバッグには プロジェクトウィンドウでEXEプロジェクトをアクティブにしてからデバッグ実行などをします

QVB6 配列を初期化したい

VB6でループさせて配列に値を入れて、計算させて最終的に求めたい値をRとします。そのときループで繰り返すためか同じ配列に値を入れてどんどん値がでかくなりRの値がおかしくなってしまいます;
おそらく問題は一回前に入れた配列がそのままのこってしまってるからなのだと思うのですが;
配列の中の値をクリアする方法はないものでしょうか?
一応、配列=0として初期化しようとしても値は変わらず前のが残ったままになってしまっています;
どなたかわかる方いらっしゃいましたらご回答宜しくお願いします

その他何かいい方法があればそれも教えていただけたらと思います

Aベストアンサー

Eraceステートメントを使用

  Dim a() as Long
  Dim s(100) as String
  Dim x() as Long

  Erase a     ’要素が0になる
  Erase s     ’要素が""になる

  Redim x(100) as Long

  Erase x      ’メモリを解放

注)VB2005の場合は動作が異なるので注意して下さい。

Q3つの表の外部結合

表A、B、Cの3つがあり、Aのすべての行を出力したいと考えています。
外部結合を用いるのだとは思うのですが、3つの表に対して行う場合の
書き方がわからず困っています。
ご教授いただけないでしょうか?
select * from a,b,c
where a.商品ID =b.商品ID (+) and b.商品ID (+) =c.商品ID (+)
としてみましたが、うまくいきませんでした。

Aベストアンサー

ansi構文の趣旨からいえば、結合条件と絞り込み条件は分けて書くので・・

select *
from a
left join b on (a.商品ID =b.商品ID)
left join c on (b.商品ID =c.商品ID)
where a.年月 = 任意の値

と書くのが一般的でしょうね。

QActiveX DLL と ActiveXコントロールの違い

VB6で開発をしています。
複数のEXEファイルを使用するシステムです。
各EXEファイルの共通のモジュールをライブラリ化しようと思っています。

これは [ActiveX DLL] 又は、[ActiveXコントロール] のどちらでも実現できると思うんですが、どちらで作成した方が良いのでしょうか?

それぞれのメリット、デミリットを教えて下さい。

Aベストアンサー

混乱させますw

私も最近まで知らなかったのですが、任意のタイミングでOCXもインスタンスの生成が可能みたいです。
WinSockを張らずにPGを書き上げ、WinSockコントロールを使用する方法がわたしの利用しているメーリングリストに出ておりました。
その結末は、「あまり公開はされてはいないけど、ほとんどのコントロールはEXEにしてからOCXとして取り込むことができる」ということです。


ActiveXDLLも参照設定をしなければ、DLLバージョンが違っても大丈夫です。
ただし宣言が
As HogeHoge←(DLLの定義)を
As Object
として、CreateObject("DLL定義")のように行うと、引数が一緒ならEXEはリコンパイルしないでもいいです。実例として、エクセルを参照設定して[as Excel]と宣言していたら、その参照設定に対応したExcelしか操作できませんが、[As Object]と[CreateObject("Excel.Application")]とすると、EXCEL95~XPまで扱えます。
不便なのは、タイプライブラリが未設定になるので、Excelの各プロパティ/メソッドを知らないといけないし、Excel固有の定数が宣言もされてないので、自分で定数値を調べなければいけません。でもバージョンの違いを気にしないでいけるのは、非常に便利です。


速さのことを言ったら、当然DLLが早いです。
OCXはプロパティにRight/Leftなどを持っています。変えて言うと実体を持っていると言うことです。非表示にしていても実体をもっています。DLLはインスタンスは生成されますが、OCXだって生成されるので、表示しないで使用するなら、OCXの意味があまりありません。


んで、私(個人)の考えとしては、、、
※オリジナルボタンなどの、画面上必要ならOCX
  理由:画面に必要だから
※画面に表示を行う必要がなくても、配布する気ならOCX
  理由:配布先のユーザが扱いやすい
※そうじゃなければDLL
  理由:OCXにする理由が見つからないから


余談です。
私はいつもCommonコントロールは使用しません。
  理由:簡単なAPIでも実現できるのに、機能が少ないCommonコントロールを追加して、EXEの容量を大きくしたくないから

混乱させますw

私も最近まで知らなかったのですが、任意のタイミングでOCXもインスタンスの生成が可能みたいです。
WinSockを張らずにPGを書き上げ、WinSockコントロールを使用する方法がわたしの利用しているメーリングリストに出ておりました。
その結末は、「あまり公開はされてはいないけど、ほとんどのコントロールはEXEにしてからOCXとして取り込むことができる」ということです。


ActiveXDLLも参照設定をしなければ、DLLバージョンが違っても大丈夫です。
ただし宣言が
As HogeHoge←(DLLの定...続きを読む

QVB6 開発環境のエディタに行番号を表示

開発環境のエディタに行番号を表示したいのですが、
方法はあるのでしょうか?

ぜひ教えてください。

win2000
vb6

Aベストアンサー

ツールバーの右の方に x行,x桁 と表示されています。
全ての行に行番号を表示するようなことはできません。(VB.NETではできます)

QDoEvents関数って何?

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そこで「EXCEL VBA パーフェクトマスター」という本を見たら

for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
DoEvents
next i
unload userform1
と入力すれば解決することがわかりました。

しかし「DoEvents」についてあまり詳しく書いていなかったのでDoEvents関数をヘルプで見ると、
「発生したイベントがオペレーティング システムによって処理されるように、プログラムで占有していた制御をオペレーティング システムに渡すフロー制御関数です。」

と書いてあるのですが正直、書いてあることがよくわかりません。

どなたかDoEvents関数について、
もう少しわかりやすく教えていただけませんか。
それから、最初に書いたコードで実行すると
ユーザーフォームの背景が真っ白になってしまう原因も
教えていただけませんか?

よろしくお願いいたします。

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そ...続きを読む

Aベストアンサー

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
    DoEvents
    Cells(i,1) = ""
  Next i
End Sub

Private Sub CommandButton2_Click()
  MsgBox "hoge"
End Sub

っていうフォームのコードがあった場合、
DoEvents を入れることによって、ループ中にユーザーがCommandButton2 を押すことによって CommandButton2 のクリック イベントも動いちゃいます。
CommandButton1 のクリック イベントではループの前に
CommandButton1.Enabled = False
CommandButton2.Enabled = False
を書いてフォーム上の CommandButton を無効にしておき、ループが終わったら
CommandButton1.Enabled = True
CommandButton2.Enabled = True
と書いて CommandButton を有効に戻してください。

これを工夫すれば、CommandButton2 で CommandButton1 のループを途中キャンセルする処理もすることができます。

Private Canceled As Boolean

Private Sub CommandButton1_Click()

  CommandButton2.Enabled = False

  Dim i As Long
  For i = 1 To 50000
    DoEvents

    If Canceled = True Then
      MsgBox "キャンセルしました"
      Exit Sub
    End If

    Cells(i, 1).Value = ""
  Next i
End Sub

Private CommandButton2_Click()
  Canceled = True
End Sub



コードの行頭にあるスペースは見易さのために全角スペースで作成していますので、これをこのままコピペするとエラーになるかもしれません。
コピペするなら行頭の全角スペースを半角スペースに直してください。

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
...続きを読む

QVisualBasic6.0のFormat関数でmSecを表示したい

VisualBasic6.0のFormat関数で時刻をあらわす方法でFormat(CStr(Now),"h:mm:ss")としていますが、mSecをあらわすときはどうしたらいいのでしょうか。どなたか教えてください。
VB.NETのffを使ってみましたがだめでした。

Aベストアンサー

Now関数では ミリセカンドの精度は持っていないようです
dim d as Double
d = now
' 日付部分を削除
d = d - Fix(d)
' 秒単位に変換
d = d * 24. * 60 *60
' 秒部分を削除
d = d - Fix(d)
といった具合にすれば 秒未満の数値が取り出せそうですがここまでの分解能が無いため浮動小数点の誤差程度の値しか求まりません

ミリ秒を取得するのであれば WinAPIのGetSystemTimeなどを使ったほうがいいでしょう

Private Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
といった具合で宣言して

dim st as STSEMTIME
GetSystemTime st
debug.print st.wMilliseconds
といった具合で取り出せますよ

Now関数では ミリセカンドの精度は持っていないようです
dim d as Double
d = now
' 日付部分を削除
d = d - Fix(d)
' 秒単位に変換
d = d * 24. * 60 *60
' 秒部分を削除
d = d - Fix(d)
といった具合にすれば 秒未満の数値が取り出せそうですがここまでの分解能が無いため浮動小数点の誤差程度の値しか求まりません

ミリ秒を取得するのであれば WinAPIのGetSystemTimeなどを使ったほうがいいでしょう

Private Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
Private T...続きを読む

Qメモリの解放について VB6 VBA

VB6やVBAで動的配列をERASEしたのですが、タスクマネージャーで見ても使っているメモリを解放しているように見えません。
動的配列の内容をMsgBoxで表示させるたびにメモリがどんどん減っていきます。Eraseしても戻りません。
Redim ArryaDat(0)とかでも無理でした。
APIを使って(どんな方法)でも、メモリを解放したいのですが、可能でしょうか?

Dim ArrayDat() as String

Redim ArrayDat(100)
ArrayDat(0) = "なんとか"
ArrayDat(1) = "かんとか"
...
ArrayDat(100) = "メモリを解放したい"

for i = LBound(ArrayDat) to UBound(ArrayDat)
MsgBox("どんどんメモリが消費されていく・・ [" & ArrayDat(i) & "]")
next i

Redim ArrayDat(0)
Erase ArrayDat
NsgBox("解放したつもり? 誰か教えて")


あと、.NETではメモリ解放はどうなっているのでしょうか?
まだ使いませんが、頭の片隅に入れておきたいです。

VB6やVBAで動的配列をERASEしたのですが、タスクマネージャーで見ても使っているメモリを解放しているように見えません。
動的配列の内容をMsgBoxで表示させるたびにメモリがどんどん減っていきます。Eraseしても戻りません。
Redim ArryaDat(0)とかでも無理でした。
APIを使って(どんな方法)でも、メモリを解放したいのですが、可能でしょうか?

Dim ArrayDat() as String

Redim ArrayDat(100)
ArrayDat(0) = "なんとか"
ArrayDat(1) = "かんとか"
...
ArrayDat(100) = "メモリを解放したい"

f...続きを読む

Aベストアンサー

Erase は、配列の要素をクリアしただけで、エリアとしては
確保されています。
完全に解放させるには、Nothingを代入させないと解放されません。
Set ArrayDat = Nothing

また、APIでメモリ解放する場合は、APIを使って割り当てたメモリ
で良く使用しますが、今回の場合は、そこまで行っていないと
思います。

ご検討下さい。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング