前のログ 次のログ

No.100

クライアントサーバーの書籍  投稿者:浦島太郎 [98/11/17(火)0:19分]

花ちゃんさん、はじめまして。
今度、NT(4.0)、VB(6.0)、SQL Server(6.5)の環境でC/Sシステムを
構築することになりました。
以前、VB(4.0)、Access(95)でプログラミングをしたことがある(二年前)ので
簡単だろうと思っていたら、甘かったです。(環境設定はどうにかできました)
そこで、花ちゃんさんにお願いがあります。
もし、C/Sシステムについておすすめの書籍があったら教えてください。
それにしても、技術の進歩は早いですね。マニュアルを読んだら聞いたこともない
言葉がたくさん出てきてしまい、参りました。
よろしくお願いします。

No.99

RE:コントロール配列について  投稿者:花ちゃん [98/11/16(月)17:44分]

イマイチ、なにをしようとされているのかよく解らないのですが?
>クリックしたImageのIndexの値をIndex1に格納したい 
 Image1(0)〜(63)のどれをクリックしたか知りたいのであれば
Image1_Clickイベントの Index の値を調べれば解りますが
Form_Loadイベントに書いておられるので、何か他の事がやりたいのかな?
又、
>Private Sub Form_Load()
>    Text1.Text = "場所を指定"
>    Index1 = ???? 
>    Text1.Text = Index1 
>End Sub 

このテキストボックスでなにを表示したいのでしょうか? 
もう少し状況を詳しく教えて下さい。

No.98

コントロール配列について  投稿者:Tanaka [98/11/16(月)14:54分]

はじめまして。 

以下の事について教えて下さい。 
 
Imageのコントロール配列(Image1(0)〜(63))があり、 
クリックしたImageのIndexの値をIndex1に格納したい。
Private Sub Form_Load() 
    Text1.Text = "場所を指定" 
    Index1 = ???? 
    Text1.Text = Index1 
End Sub 
????に入るべき文を教えて下さい。 
よろしくお願いします。 


No.97

RE:テキストボックスのフォーカスをなくすには?    投稿者:亜美 [98/11/13(金)14:20分]

こういうのでどうでしょうか? 

'Text1にカーソルが行かないようにする。 
Private Sub Text1_GotFocus() 
    Text2.SetFocus   '← このテキストボックスは見えない位置に置いておく 
End Sub 

No.96

TEXTファイルを呼んで構造体に!  投稿者:BUBBUB [98/11/11(水)21:40分]

はじめまして。VB超初心者です。 
困ってます。誰か教えてください。 
TEXTファイル(固定長)を読んで、そのデータを構造体(レコード)にとりこみたい 
のですが、Line Input で取り込むときはVariantじゃないと
だめみたいなので、Varの変数で
とって、その後構造体の変数に移そうとするとエラーになります。 
どーすればいいの??

NO.95

ゆう(U)さんへ☆☆☆  投稿者:うるふ [98/11/10(火)23:55分]

ゆう様、お返事ありがとうございます。 

確かに天秤の種類は多々あります。 
ちなみに接続したい天秤のメーカーは「島津」です。 
で、環境は OS : WINDOWS95 、マシン : NEC(98NX) 
          VB : version5.0(Professional) です。 
天秤については、今までBASIC(古いけど(^^; )で使用していたため、 
BASICに対してのコード表はあります。 
でも、VBに対してのコード表は取り寄せていません。 
ゆうさんの言うように、ドライバーやDLLでも出ているかもしれませんし、 
一度、メーカーに問い合わせてみたいと思います。 
それでも上手くいかないようでしたら、また、詳細を掲示板に書いてみようかと 
思います。本当に、こんな私につきあってくださってありがとうございました。 
もう一度、がんばって調査してみます。(^^)/ 

NO.94

  投稿者:ゆう(U) [98/11/09(月)15:40分]

電子天秤を持っていないのですが・・・ 

まず、世界(日本)中に電子天秤なるものは1種類のみ存在するのでしょうか? 
それなら持っている人はわかると思いますが、数種類存在するなら発売元や型番 
などで1つに絞り込まないといけないと思います。 

RS-232Cで接続するのは良いのですが、その機器の制御コードのマニュアルなどを 
持っていますか? 
当然何らかの方法で取得されていますよね! 

そのマニュアルに接続の通信速度などの設定値は書いてありませんか? 
電源投入後の初期化用制御コードは? 
それに対する返信コードは? 
計測開始の制御コードは? 
状態監視コードは? 

これらを順に調べていくといくらか進展すると思うのですが・・・ 

ものによっては専用のデバイスドライバーをDLLで制御して操作できる 
ものも在るかもしれません(電子天秤にあるかは不明ですが)。 

なお環境として 
OS、VBバージョン・エディション・SP 
パソコン(NEC、DOS/V) 
なども・・・ 

No.93

悩んでいます・・・  投稿者:うるふ [98/11/08(日)23:04分]

初めまして☆私はVB初心者のため、今、大きな問題で悩んでいます。 
それは、「電子天秤(自動)のデータが安定したら、VB上にINPUTデータとして 
取り込む方法」なのですが、誰か教えてもらえませんか? 
「CommEvent」で「MSComm」を用いれば出来るらしいのですが、上手く行きません。 
ちなみに「RS-232C」を使用してマシンと天秤を接続しています。 
もし、わかる方がいましたら御指導ねがいます。

No.92

四捨五入  投稿者:carol [98/11/04(水)23:56分]

乱数を生成するために、下記のソースコードを作製しました。 
X = Left((X ^ 2), 4)  で、常に上4桁を取り出し、その 
4桁に0.5を加え、5桁目を常に四捨五入(切り上げ)を行いたいの 
ですが、うまくできません。X = Int(Left((X ^ 2), 4) + 0.5)の 
部分をどのように変えたらうまくいくでしょうか? 

もう一つ、初期値に小数点を含む数値を入力し、上記の結果と同じ 
ように常に上4桁を取り出すとき、取り出した結果を小数点を含 
まない整数へ変えるにはどうしたら良いのでしょうか? 

教えてください。お願い致します。 

---------------------------------------------------------- 
Option Explicit 
Private Sub Command1_Click() 

  Dim n As Long '文字数の宣言 
  Dim X As Long '初期値の宣言 

    X = Text2.Text '初期値の取得 
       For n = 1 To CLng(Len(Text1.Text)) '文字数の取得 
    X = Int(Left((X ^ 2), 4) + 0.5) '初期値Xから乱数作製 
 
     Debug.Print (X) 
     Next 

End Sub

No.91

お礼:テキストボックスのフォーカス  投稿者:しょうきち [98/11/02(月)13:26分]

花ちゃんさん、早速の回答、ありがとうございます。返事がおそくなり 
ましたが、無事、解決できました。TextBoxをLockedするだけでは 
だめだったということがわかりました。 
 
また、お世話になるかもしれませんが、その時はよろしくお願いします。

No.90

RE:テキストボックスのフォーカスの件  投稿者:花ちゃん [98/10/30(金)20:46分]

テキストボックスでのイベント等を完全に無視してよいのなら 
Text1.Enabled = False 
を試してみて下さい。

No.89

テキストボックスのフォーカスをなくすには?追加  投稿者:しょうきち [98/10/30(金)15:58分]

二重、三重の投稿になってしまいました。本当にごめんなさい! 
 
一番最初に「TabStopをTrueに」で二回目に「TabStopをFalse」 
という、まったく違うことをかいてますが、多分「TabStopをFalse」 
が正しいと思います。まったく見当違いだったらまたまたすみません! 
 
よろしくお願いします。 

No.88

フォーカスをなくすには  投稿者:しょうきち [98/10/30(金)15:38分]

こちらで初めて質問します。よろしくお願いします。 

VB4.0なんですが、フォームが表示される時に、テキストボックスにフォーカス 
が表示されないようにしたいのです。 
一応、FormLoad時にTabStopをTrueにしたのですが、うまくいきません。 
なにかいい方法がありましたら、よろしくお願いします。

No.87

バイナリファイル<->文字列へ  投稿者:ELU [98/10/23(金)15:57分]

はじめまして。バイナリファイルを文字列として相手先に送ってしまおうという
(MIMEみたいの?)ことをたくらんでいるんですが、技術不足でどうにもなりません... 

どうにかならないでしょうか?(^。^;)

No.86

RE:アクティブタイトルバー・・・・  投稿者:花ちゃん [98/10/22(木)23:47分]

花ちゃんにそんな難しいこと聞いてもらっても解りません。 
そのかわり、私のリンクの 素人工房さんのHPのAPIのすすめの 
中の第8回:タイトルバーへ悪戯書きがありますので、それでどう 
でしょうか? 
希望しておられるものだったらいいのですが?

No.85

テキスト・・ありがとうございました  投稿者:にゃ [98/10/22(木)23:25分]

花ちゃん・ゆう(U)さん、ほんとにありがとうございました。 
ようやく次に進めます。 
また、わからない事がありましたら 
すみませんが、手ほどきよろしくお願い致します。 

No.84

アクティブタイトルバー・・・・  投稿者:MARU [98/10/22(木)22:54分] http://www1.plala.or.jp/kazukun/

 花さん、お久しぶりです。 
ところで、他のアプリのアクティブタイトルバーに 
文字を書き込むにはどうすればいいんですか?

No.83

RE:こんなやり方でいいのでしょうか  投稿者:花ちゃん [98/10/22(木)21:05分]

事後処理でいいのならこちらの方が高速に処理できると思います。 

 Text1.Text = RTrim(Mid(.yomi, 1, InStr(.yomi, vbNullChar) - 1)) 

No.82

続:テキスト〜ごめんなさい  投稿者:にゃ [98/10/22(木)18:40分]

すみません。書いてから気づきました。 
こうすればいいんですね。 

While Right(yomi, 1) = vbNullChar 
    yomi = Mid(yomi, 1, Len(yomi) - 1) 
Wend 

でも本当にこんなやり方でいいのでしょうか? 

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

No.81

続:テキストボックスについて  投稿者:にゃ [98/10/22(木)18:29分]

皆様、お答えありがとうございます。 
また、色々しました。 
花ちゃんのを参考にさせて頂きましたが、どうも変化なしです?? 
(コードを追加しただけで駄目なのでしょうか?) 
(旧データも捨てないといけないのでしょうか?) 
で、色々テストしました結果を書きます。 

RTrimは右からスペースを消すのだと思い、 
文字列(yomi as String * 30)の 
最後(右)を探したところvbNullCharを見つけました。 
それを消してやりRTrim(yomi)->Textbox->yomi->Putでセーブしました。 
読み込みました。またvbNullCharがでました。 
(全角文字が1文字入っている場合です) 
yomiのPut/Get関係で、全角が入っている文字列には勝手に 
vbNullCharを入れてしまうのではないでしょうか? 
で、次のコードで落ち着きましたが・・・・よく分かりません。 
If Right(yomi, 1) = vbNullChar Then 
    yomi = Mid(yomi, 1, Len(yomi) - x) 
End If 
どうしてxを使っているかというと、ここが分からないのです。 
全角文字数をxにしないとちゃんとならないのです。 
つまり"aあbいcうeえg"だと、x=4でないといけないようなのです。 
全角の位置は関係ないようです。 
全角の数だけ最後にvbNullCharを追加するようです。 
全角だけの文字数なんてどうやって取ればいいのでしょうか? 
すみません。また教えてください。 
他の案もお願いします。 
僕のPCが変なのでしょうか?(あー深みにはまっていく〜) 
よろしくお願い致します。 

No.80

RE:ファイルの削除  投稿者:花ちゃん [98/10/22(木)17:22分]

どなたも回答がないようですので、どこかでサンプルを公開されていないか 
探したのですが、見当たりませんでした。私のHPのこんなサンプルどこにあるの 
「ファイルの検索(サブフォルダー対象)」等を参考にされたらどうでしょうか

No.79

Re3:テキストボックスについて    投稿者:花ちゃん [98/10/22(木)15:26分]

ゆう(U)さんご指摘の通り新規作成時にアスキーコードの 0(vbNullChar) 
が入ります。本来ならレコードを最初にフォーマットする必要があるものと 
思われます。 
回避策として新規作成時に都度フォーマットするように考えて見ました。 

サブルーチンに 
Public Sub F_format() 
    With Add 
       .yomi = Space$(30) 
       .mei1 = Space$(34) 
       .mei2 = Space$(34) 
       .keis = Space$(4) 
       .yuno = Space$(8) 
       .jyu1 = Space$(34) 
       .jyu2 = Space$(34) 
       .tel1 = Space$(16) 
       .tel2 = Space$(16) 
       .tel3 = Space$(16) 
       .tel4 = Space$(16) 
       .biko = Space$(120) 
       .saku = Space$(10) 
       .syus = Space$(10) 
    End With 
    Put #1, RC1, Add 
    Get #1, RC1, Add 
End Sub 
 
表示のところを 
Public Sub Hyoji() 
    '指定レコードのデータを表示 
    'レコードNOのエラー防止 
    If RC1 = 0 Then RC1 = 1 
    Get #1, RC1, Add 
    If Mid$(Add.yomi, 1, 1) = vbNullChar Then F_format '追加 
    With Add 
        Text1.Text = RTrim(.yomi) '変更 
        Text2.Text = RTrim(.mei1)  '変更 
 
これで一応回避できます。 
一度登録されたデータは空白の部分をデリートして再書き込みすればOKです。 
あとテキストボックスの幅だけしか入力できないように制限したいなら教室で使った 
Strcut関数(自作)を使って下さい。 
また、第4回目の最後の方に記入している部分も参考にして下さい。 

No.78

Re2:テキストボックスについて  投稿者:ゆう(U) [98/10/22(木)14:12分]

RTrimは問題なく動作しているようなので・・・ 
もしかするとvbNullCharが入っていませんか? 
 
Private Sub Command1_Click() 
  Dim strTemp As String * 10 
  Dim i As Long 
'宣言直後の状態 
  For i = 1 To Len(strTemp) 
    Debug.Print Asc(Mid$(strTemp, i, 1)) 
  Next i 
'値を代入後の状態 
  strTemp = "A   " & vbNullChar 
  For i = 1 To Len(strTemp) 
    Debug.Print Asc(Mid$(strTemp, i, 1)) 
  Next i 
  Debug.Print RTrim$(strTemp); "←" 
End Sub 
 
この様に途中にvbNullCharが入っているとRTrimは正常に 
vbNullCharまででTrimを止めてしまいます。 


そしてテキストボックスはvbNullCharまでの文字列しか 
受け取りません(vbNullCharの後に文字は無視します)。 
(C言語などでは文字の終端を表わすのに使用されます) 
確認) 
strTemp = "A  " & vbNullChar & "BB" 
Text1.Text = strTemp 
Debug.Print strTemp; "←" 
Debug.Print Text1.Text; "←" 
 
もしvbNullCharが原因なら何処かにバグがあるのかも知れません。 
※テキストボックスへはvbNullCharを入れられないので、文字列 
 変数を処理している時に、vbNullCharが入る原因を突止めて下さい。 

NO.77

ありがとうございます  投稿者:にゃ [98/10/22(木)9:19分]

ゆう(U)さん、お返事ありがとうございます。 
くわしく書かせて頂きます。 
私は、VB5.0+SP3です。 
標準モジュール 
  Private Type ShoruiFile 
    Yomi As String * 30 'よみがな 
       | 
  End Type 
  Public Shorui As ShoruiFile 
  Public RC1Max As Integer 
  Public RC1 As Integer 
 
フォーム 
  Private Sub Form_Load() 
    Open "c:\Data.DAT" For Random As #1 Len = Len(Shorui) 
    RC1Max = LOF(1) / Len(Shorui) 
    If RC1 = 0 Then RC1 = 1 
    Get #1, RC1, Shorui 
    With Shorui 
      Text1.Text = RTrim(.Yomi) 
          | 
    End With 
  End Sub 

  Private Sub Command_Click() 'セーブボタン 
    With Shorui 
       .yomi = Text1.Text 
          | 
    End With 
    Put #1, RC1, Shorui 
  End Sub 
一部だけ取り出しましたが、大まかにはこんな感じです。 
ちなみに花ちゃんのプログラミング教室のプログラムにRTrimを加えましたが 
やはり初回の読み込みでは、全角が入っているとスペースが出ます。 
(テキストボックスにマウスで反転させるとスペースが見える。) 
一旦セーブ(書き込み)し他のレコードに変えると、症状が治ります。 
ゆう(U)さんや他の方は、どうなんでしょうか? 
すみません。よろしくお願い致します。 
※テキストボックスの文字制限は、がんばってみます。 

No.76

Re:テキストボックスについて  投稿者:ゆう(U) [98/10/22(木)0:15分]

にゃさん、夜分失礼します。 
 
>初心者が編集する時の為、RTrimを使ってテキストボックスに入れましたが 
>オール半角の場合、きちんと消えるのに全角文字が少しでも入ると 
どのように確認したのですか? 
 
テストコード:テキストのチェンジイベントで実行) 
Debug.Print RTrim(Text1.Text); "←" 
私の環境では問題なく全角・半角スペースともに消去されます。 
※途中に漢字と半角英数字を使用している場合で確認しました 
 にゃさんはどのような環境で行っているのでしょうか? 

ちなみに花ちゃん(さん)の教室のとおりにしているなら固定長の文字列なので 
変数では後ろに半角スペースが追加されています(自動でVBが付加します)。 
ですからテキストボックスへの転記の際にRtrimをしなければなりません。 
※にゃさんはどのようにコードを書いていますか? 

文字数ではなく文字列幅で制限をかけたい? 
TextWidthでそのフォントでの幅を調べるか、ラベルを非表示にして 
フォームへ貼付けてテキストボックスのフォントと同じにし、Autosizeを 
TrueにしてからCaptionに文字列を設定してからWidthプロパティで文字列の 
長さを判定して入力に制限を加える。 
※ちょっと複雑になると思いますががんばってコーディングしてください。 
 途中で不明点など発生したらそのときのコードを添付して質問してみて 
 下さい、できる限りアドバイスさせていただきます。 
 
●質問の際には自分の環境(OS/VBのバージョン・エディション・SP)を 
 添付して下さい、環境で動作が異なる場合があります。 

私の環境は 
Win98/VS97Pro(SP3) 
VS6.0Proは箱にいれて飾ったままです(インストールしていません)。 

No.75

テキストボックスについて  投稿者:にゃ [98/10/21(水)22:30分]

花ちゃんのプログラミング教室拝見いたしております。 
参考になります。(ありがとうございます) 
本題ですが、上記の教室の方法を用いて試作品を作りました。が・・・ 
ファイルを読み込んだ時、テキストボックスには後ろにスペースが入ってしまいます。 
初心者が編集する時の為、RTrimを使ってテキストボックスに入れましたが 
オール半角の場合、きちんと消えるのに全角文字が少しでも入ると 
消えないんです・・・(ここで数日悩んでいます・・・) 
バクでしょうか? 
あと、テキストボックスの枠までしか入力出来ない様に出来ませんか? 
(半角・全角入り乱れての場合です。) 
文字数指定を使うと悲しい結果になってしまいます。 
(半角に合わせると全角は駄目・逆は駄目) 
一週間ほどテキストのおかげで眠れません。 
誰かたすけて下さい。お願いします。 

No.74

お礼:重複不可属性のフィールドのイベントをつかみたいのですが?  投稿者:Kazunori [98/10/18(日)1:55分]

Mas&Mie さん にご回答いただきました 
早速利用させていただきます 
ありがとうございました 

No.73

RE:重複不可属性のフィールドのイベント  投稿者:花ちゃん [98/10/16(金)18:04分]

VB初心者友の会の方で回答されていましたが、あれではだめなのでしょうか?

No.72

重複不可属性のフィールドのイベントをつかみたいのですが?  投稿者:Kazunori [98/10/16(金)1:21分]

VB5Pro・MDB形式・DAO・ダイナセットタイプ 
で簡単な住所録を作成しました。 

Dataコントロールは非表示にしています。 
したがって、レコードの移動・更新・終了・等、たくさんの 
データ操作ボタンや、結果的にデータが更新してしまう場合 
があります。 
(他のフォームで同じテーブルを参照して移動・更新したりします) 

ここで困ったのですが、 
氏名フィールドだけは 
「主キー、重複入力不可、空文字不可、値要求あり」 
属性です。 

したがって、同じ氏名を入力してしまったとき「メッセージを表示したい」 
のですが、そのイベントがわからないのです。 
いくつもあるボタンや、すべてのイベントのプロシージャ全部に、 
エラー番号を調べて見つける方法しかないのでしょうか? 
Dataコントロールだけならきちんと無愛想な重複している旨のメッセージを 
表示してくれるのですが・・・。 

いろいろな初心者用の書籍を買ったのですが、 
そのような時のメッセージ表示の例が 
記述されていません。 
どなたか教えていただけますでしょうか。 
よろしくお願いいたします。 

No.71

ファイルの削除  投稿者:たけ [98/10/15(木)11:44分]

だれか教えてください!   
私は、ファイル名の一部に日付をつけて、ネーミングしております。 
例(X981011XX.XLS) 
その複数ファイルの中から、ファイル名の日付(5ヶ月以前を全件とか)によって 
一括削除させたいと思っております。 
親のフォルダーは"DATA\”となっており、その中に複数のフォルダーがあり全てを対象に 
したいです。 

dirやfindfistfile関数を使って見たのですが、うまくいきません。 
どうすれば出来るでしょうか? 
お願いします。 

NO.70

RE:計算  投稿者:花ちゃん [98/10/08(木)21:31分]

Private Sub Text1_KeyPress(KeyAscii As Integer) 
    If KeyAscii = 13 Then 
        KeyAscii = 0 
        Dim zei As Currency 
        Dim tanka As Currency 
        Dim goukei As Currency 
        tanka = Text1.Text 
        zei = tanka * 0.05 
        goukei = tanka + zei 
        Text2.Text = Format(zei, "###,###") 
        Text3.Text = Format(goukei, "###,###") 
    End If 
End Sub 

又はCommandボタンに計算の部分を貼り付けて下さい。 
表示を右寄せにするにはテキストボックスのAlignmentを1―右揃えに 
設定して下さい。

No.69

計算  投稿者:りゅう [98/10/08(木)20:49分]


例えば、1個目のText Box に物の値段を、入れたら、2個目のText Boxには、 
物の値段に対する消費税額が出てきて、3個目のText Box には、 
総合計出るようにするには、どうしたら、いいのですか。誰か教えて下さい。

No.68

クイックソートにバグ!  投稿者:ゆう(U) [98/10/08(木)12:02分]

ごめんなさい、以前投稿したクイックソートにバグがありました、 
ソート内容に同一の値があると無限ループに突入します。 

以下の様に修正すると正常に動作します。 
 
昇順用Quickソートと昇順用Quickソート共に 
      myArray(i) = myArray(i) Xor myArray(j) 
      myArray(j) = myArray(i) Xor myArray(j) 
      myArray(i) = myArray(i) Xor myArray(j) 
の後に 
      i = i + 1 'これを追加 
      j = j - 1 'これを追加 
この2行を追加です。 

No.67

ゆう(U)さんへ  投稿者:Jpro [98/10/02(金)16:10分]

早速のレス本当にありがとうございました。 
あるファイルが存在するとまずいので、強制的に消すkillコマンドを使わせていただきます。 
投稿した後、VB付属のプログラミングガイドのコードのデバッグ及びエラー処理の章で 
たまたま、DIR関数を見つけたので自己レスするつもりでしたが、
既に回答されていた後だったのでお詫び申し上げます。 
これからもVBレスキューを利用させていただきますので、よろしくお願いします。

No.66

注意事項  投稿者:ゆう(U) [98/10/02(金)15:56分]

●翔さんへ、前回のコードで注意点を数点・・・ 
 
App.Pathは起動直後に文字列変数などへ待避しておく方が良いです。 
(何かの拍子にフォルダーが変更される場合が有ります) 
構造体OPENFILENAMEをSaveFileNameと改名しているようですが 
この様なAPI関係の構造体は元の名前のままの方が良いです。 
(他人が見た場合他にも変更しているか不安になります) 
>SaveFile.lStructSize = Len(SaveFile) 
>SaveFile.hwndOwner = frmUj.hwnd 
>SaveFile.hInstance = App.hInstance 
>  : 
>SaveFile.lpstrInitialDir = App.Path 

この様な場合Withを使用した方が可読性+速度(ちょっと)が 
増します。 
サンプルコード) 
'アプリケーションの起動フォルダーを取得 
Public Function fMyAppPath() As String 
  Static strMyPath As String 
  If Len(strMyPath) = 0& Then 
    strMyPath = App.Path 
    If Right$(strMyPath, 1&) <> "\" Then 
      strMyPath = strMyPath & "\" 
    End If 
  End If 
  fMyAppPath = strMyPath 
End Function 

※起動直後のSub MainかスタートアップフォームのLoadで 
 1度Callして下さい、その後は何処から使用(Call)しても 
 起動時のフォルダーを返します。 
 ルートでもフォルダーでも同じように¥付きのPathになります。 
 ネットワークドライブでは動作未確認です。 

No.65

Re:DOSファイルの削除  投稿者:ゆう(U) [98/10/02(金)15:28分]

※Windowsで見れるファイルはDOS窓で作成していようが関係有りません。 

キレた方法は 
エラートラップしていきなりそのファイルを 
フルパス指定でKillしてしまう。 

エラーなら存在しなかった。 
エラーにならないなら存在していた。 

※どの道削除してしまうならエラーだろうが、エラーじゃなかろうが 
 結果的に存在しなくなる 

普通の方法は 
そのファイルが存在するのを確認してから 
フルパスでKillする。 

※Killすると本当に削除(ごみ箱へは行きません)します 
 SHFileOperation(API)を使うとごみ箱行きも選択できます 

ヘルプ参照 
Kill ステートメント 

サンプル:自作のExistコード) 
Public Function fFileExist(ByRef FileName As String, _ 
               Optional Attributes As VbFileAttribute = vbHidden _ 
                          ) As Boolean 
  On Error Resume Next 
  fFileExist = Dir$(FileName, Attributes) <> vbNullString 
  If Err.Number <> 0 Then 
    fFileExist = False 
  End If 
End Function 

※使い方は自分で試して見て! 

No.64

コモンダイアログAPI-2  投稿者:ゆう(U) [98/10/02(金)15:08分]

翔さんへ、あれから寝ずに調べました・・・うそ(寝てないのは事実ですが)。  

とりあえずlpstrDefExt As Stringに"*"でも設定して実行して下さい。 
たったこれだけの違いでした・・・  
VBのコモンダイアログと比べて出来ないのはおかしいとおもい調査した結果、 
ゆー太郎さんの「空耳工房 MY2Project」−API 心の小部屋−703号室の 
コードと自分のコードを比べて確認しました。  
MSDNでフラグを全て調べたり、lpfnHookで何とかならないかとか・・・ 
色々やって見たんですが、たったこれだけでした。 

No.63

DOSファイルの削除  投稿者:Jpro [98/10/02(金)14:35分]

すんません、まったくの初心者です。 
指定ディレクトリ(フォルダー)にDOSファイル(xxxxxx.txt)が存在する場合には、 
そのファイルを削除したい場合、VBではどのように記述すればいいのでしょうか?  

MS-DOSの場合で言うと、例えば 
IF exist c:\tmp\xxxxxx.txt del c:\tmp\xxxxxx.txt 
なんていう、ファイルが存在するかどうか判断するコマンドがあるんですけど。

No.62

コモンダイアログAPI  投稿者:ゆう(U) [98/10/01(木)22:34分]

APIでは自動では拡張子がつかないようです、ですから 
フィルターインデックスで指定された拡張子が付いているか 
確認して、付いていなければ自分で付けなければならない 
ようです。 

※フィルターインデックスには変更結果が返っています。 

No.61

ゆう(U)さん へ  投稿者:翔 [98/10/01(木)17:08分]

>ゆう(U)さん  
いつも有り難うございます。 
説明不足でしたが、APIっていうんですかそれをつかってログボックスを引っぱり出して 
いるのですが、一応下にコードを複写しておきましたので宜しく御願いします。 
関係無いかもしれませんが私のは 

Win95/VB5.Learning(SP無し)/IE4.01・・です 

Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias _ 
      "GetSaveFileNameA" (pSaveFileName As SaveFileName) As Long 
Private Type SaveFileName 
      lStructSize As Long 
      hwndOwner As Long 
      hInstance As Long 
      lpstrFilter As String 
      lpstrCustomFilter As String 
      nMaxCustFilter As Long 
      nFilterIndex As Long 
      lpstrFile As String 
      nMaxFile As Long 
      lpstrFileTitle As String 
      nMaxFileTitle As Long 
      lpstrInitialDir As String 
      lpstrTitle As String 
      flags As Long 
      nFileOffset As Integer 
      nFileExtension As Integer 
      lpstrDefExt As String 
      lCustData As Long 
      lpfnHook As Long 
      lpTemplateName As String 
    End Type 
Private Sub Command1_Click() 
Dim SaveFile As SaveFileName 
      Dim lReturn As Long 
      Dim sFilter As String 

      SaveFile.lStructSize = Len(SaveFile) 
      SaveFile.hwndOwner = frmUj.hwnd 
      SaveFile.hInstance = App.hInstance 
      sFilter = "すべての形式 (*.*)" & Chr(0) & "*.*" & Chr(0) & _
                             "テキスト形式 (.txt)" & Chr(0) & "*.txt" & Chr(0)    
      SaveFile.lpstrFilter = sFilter 
      SaveFile.nFilterIndex = 1 
      SaveFile.lpstrFile = String(257, 0) 
      SaveFile.nMaxFile = Len(SaveFile.lpstrFile) - 1 
      SaveFile.lpstrFileTitle = SaveFile.lpstrFile 
      SaveFile.nMaxFileTitle = SaveFile.nMaxFile 
      SaveFile.lpstrInitialDir = App.Path

No.60

コモンダイアログ(保存)の拡張子  投稿者:ゆう(U) [98/10/01(木)10:23分]

VBのバージョンは?4(16,32)/5/6 
コモンダイアログコントロールのSPは2ですか? 
コモンダイアログのプロパティはどのように設定されていますか? 
 
実際のコードを添付されるとReしやすいです。 

Filterで指定している拡張子(複数)以外の拡張子(なし含む)で保存すると 
現在設定されているFilterの拡張子が自動で付加されます(私のコードでは)。 

Win95/VB5.0pro(SP3)/IE4.01 

サンプルコード) 
With CommonDialog1 
  .DialogTitle = "データ保存" 
  .Flags = cdlOFNExplorer _ 
         + cdlOFNHideReadOnly 
  .FileName = fMyAppPath & "*.Tra" 
  .Filter = "テキストファイル|*.Txt|バイナリ ファイル|*.Bin" 
  .FilterIndex = 1 
'  .CancelError = True 
  .ShowSave 
  Debug.Print .FileName 
End With 

NO.59

  投稿者:翔 [98/10/01(木)2:59分]

初心者友の会にも聞いてはいるんですが、 
なかなか待ち遠しくここにも書いてみます。 
 
今回はファイル保存用の保存用コモンダイアログについて質問なのですが、 
ダイアログボクッスが開いてファイルはしっかりと保存するのですが 
拡張子が無いままのファイルが保存されます。 
ふつうならば、ファイルの種類の欄がTXTならば、ファイル名の欄に 
例えば“AA”と記入すると自然にというか勝手に“AA.TXT”が保存されていますよね。 
そうさせる様な構文でもあるのでしょうか 
困っています。花ちゃんさんご教授を〜〜!

No.58

あっさり解決m(__)m  投稿者:翔 [98/9/29(火)0:13分]

こんばんは翔です。 
おかげ様で問題はあっさりと解決しました。 
よくよく考えてみるとそうですよね。 
とにかく大変助かりました。有り難う御座います。

No.57

RE:検索について  投稿者:花ちゃん [98/9/26(土)8:05分]

件数が30件でしたら 
 
While A <> ShData And ShCP < 31  '30件まで  

If ShCP > 30 Then  '30以上だったら 

 

となるのではないでしょうか? 

一度試して下さい。 

 

No.56

検索について  投稿者:翔(・・いつもスイマセン) [98/9/26(土)2:43分]

花ちゃんさん、お久ぶりです。 
今回は検索についてお伺いしたいのですが、 
以下のコードでは、どうしても29件目まですか検索しません。 
最終項目の30番目を検索しても、項目が存在するのに 
“該当なし”とでます。 
どこが、いけないのかわかりません。 
よろしくお願いします。 

While A <> ShData And ShCP < 30  

ShCP = ShCP + 1 

A = DT_NA(ShCP) 

 

Wend 

 

If ShCP > 29 Then 

prompt = "該当なし" 

buttons = vbCritical 

Title = "検索" 

ans = MsgBox(prompt, buttons, Title) 

Exit Sub 

End If

No.55

MSFlexGridの表示について     投稿者:gogogo [98/9/24(木)23:06分]

 gogogoです。花ちゃんさんいろいろご教示ありがとうございました。 
またわからないことがあったら質問させて頂きます。 
そのときは宜しくお願いします。

No.54

RE1:MSFlexGrid   投稿者:花ちゃん [98/9/24(木)0:16分]

>CLOSE #2がなかったんですが 
ご指摘の通り必要です。 
書き忘れたのではないのですが元々表示及びソートの部分だけ変更して 
ファイルが同時に複数開けるか確認しただけなので、保存・その他 
の部分は手直ししておりません。 
 

No.53

RE:MSFlexGrid 表示の件のお礼  投稿者:gogogo [98/9/23(水)22:20分]

 gogogoです。サンプルデータ送って頂きありがとうございます。 

忙しい中に詳しく書いていただき,その親切に感謝します。 

2つのファイルを読み書きするにはファイル番号を変えて#1,#2
でそれぞれOPENすればいいんですね。なるほど大変参考になりました。
1つ気になったことがあったんですが,CLOSEの場合,CLOSE #1の
記述はあって,CLOSE #2がなかったんですが,これは?
書き忘れ?それとも不要なんでしょうか。


No.52

RE:MSFlexGrid 表示の件その3  投稿者:gogogo [98/9/21(月)23:51分]

こんばんは,花ちゃんさん。
もしよければ,そのコードの記述例送っていただけませんか?
名簿ファイルと数値ファイルという2つのデータファイルを
呼び出して,1つの表内に表示させたいのです。

No.51

RE:MSFlexGrid 表示の件その2    投稿者:花ちゃん [98/9/21(月)9:42分]

申し訳ありませんが今手持ちの分は初期に作ったもので
恥ずかしくて公開できるものではないので、技術評論社発行の
はじめてのVisual basic5という本のなかで、ファイルの
リード・ライトという事でMSFlexGridを使って説明されて
あります。又入出力だけでなくソートのやり方等40ページ
ほど解説されておりサンプルCDもあります。
価格が2600円と少し高いのですが。
尚、メールでも頂ければ、サンプルを送付致しますが?

どなたか、該当のサンプルお持ちでしたらUP願えないでしょうか?

前のログ 次のログ


VBレスキュー(花ちゃん)
Visual Basic6.0  VB6.0