ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2018年11月22日(木) 03:01

All times are UTC+09:00




新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2005年6月12日(日) 03:25 
ステップ11 「テキスト エディタを作る」の「開く」メニュー イベントの

'hEditにフォーカスをセット
SetFocus(hEdit)

のあとに以下のコードを追加しタイトルバーにファイル名を表示させようとしました

  'タイトルバーにファイル名を表示
    Dim DrivePath As String
    Dim DirPath As String
    Dim Fname As String
    Dim ExName As String

    _splitpath(FileName, DrivePath, DirPath, Fname, ExName)
    SetWindowText(hMainWnd, Fname)

デバックで動作を確認すると、メニューからファイルを開くを選らび目的のファイルを選択し開いた瞬間に落ちてしまいます。このときにエラーはでませんでした。

因みに
    SetWindwoText(hMainWnd, FileName)
だけならフルパスのファイル名がタイトルバーに設定されました

また、ファイル名を分割した後
    MessageBox(0,Fname,"",MB_OK)
で確認する事まではできました。しかしOKを押した後ですぐに落ちてしまいました。理由がわからずバグかと思われましたのでここに投稿させていただきます。


通報する
ページトップ
   
投稿記事Posted: 2005年6月12日(日) 12:09 
オフライン

登録日時: 2005年5月31日(火) 20:14
記事: 203
住所: 兵庫県
コード:
Dim Fname As String
Fname = ZeroString(MAX_PATH)
_splitpath(FileName, NULL, NULL, Fname, NULL)
のようにしなければなりません。
_splitpath関数(に限りませんが)で文字列を返してもらうときには、返してもらう変数に領域を確保しないとエラーか強制終了になります(これを行うのがZeroStringの行)。
また、取得しなくてもいい要素は、NULLを指定して受け取らないようにすることができます。私が書いた_splitpathの行でNULLが3つもあるのはそういうことです。
もし他の要素も欲しい場合、文字列変数にZeroString関数で適当な領域(サイズがわからなければMAX_PATHだけあれば確実)を確保し、それを引数に指定してください。

つまり、ABのバグではありません(^^;


通報する
ページトップ
 記事の件名: 確認しました
投稿記事Posted: 2005年6月12日(日) 14:52 
詳しく教えて頂きありがとうございました、こちらでも動作を確認しました。
しかし、コードの上の方で似たようなことやってながら全く気が付かなかった。OTL


通報する
ページトップ
   
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 3 件の記事 ] 

All times are UTC+09:00


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[1人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by KONISHI Yohsuke