ファイルをセット

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
C1000
記事: 185
登録日時: 2006年5月07日(日) 17:16
お住まい: 宮城県
連絡する:

ファイルをセット

#1 投稿記事 by C1000 »

ファイルを開きエディトボックスにセットしようとしたのですがうまく動きません。
どこが悪いのでしょうか?(ブレークポイントできちんとしたパスが渡されているのを確かめました。)

コード: 全て選択

Sub TextSet(path As BytePtr)	'ファイルを開きエディトボックスにセットする関数
    Dim hFile As VoidPtr           'ファイルハンドル
    Dim FileSize As Long         'ファイルサイズ
    Dim buffer As BytePtr        'バッファポインタ
    Dim dwAccessByte As DWord
	'変数pathにファイルパスが格納される

    'ファイルを開く
    hFile=CreateFile(path, GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, 
                     ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
	OutputDebugString(path)

	'ファイルを開けなかったとき
    If hFile=INVALID_HANDLE_VALUE Then
        MessageBox(hMainWnd,"ファイルオープンに失敗","エラー",MB_OK or MB_ICONEXCLAMATION) 'ここではじかれます。
        Exit Sub
    End If

    'ファイルサイズを取得し、バッファを確保する
    FileSize=GetFileSize(hFile,0)
    buffer=calloc(FileSize+1)

    'ファイルの読み込み
    ReadFile(hFile,buffer,FileSize,VarPtr(dwAccessByte),ByVal 0)
    buffer[dwAccessByte]=0

    'ファイルをクローズ
    CloseHandle(hFile)

    'テキストバッファをエディットボックスにセットする
    SetDlgItemText(hMainWnd,MainEdit,buffer)

    'バッファを解放する
    free(buffer)
End Sub
Toshi
記事: 98
登録日時: 2005年7月19日(火) 19:47
お住まい: 山形県
連絡する:

#2 投稿記事 by Toshi »

ファイルは正しく読み込まれているようなので、

コード: 全て選択


   SetDlgItemText(hMainWnd,MainEdit,buffer) 

この部分で何か問題があるかもしれません。(ウィンドウ ハンドルや ID が正しくないなど)
「具体的に」どこがうまく動かないのでしょうか?
C1000
記事: 185
登録日時: 2006年5月07日(日) 17:16
お住まい: 宮城県
連絡する:

#3 投稿記事 by C1000 »

書いておきましたがそこまでたどり着かないのです。

コード: 全て選択


'ファイルを開けなかったとき
    If hFile=INVALID_HANDLE_VALUE Then
        MessageBox(hMainWnd,"ファイルオープンに失敗","エラー",MB_OK or MB_ICONEXCLAMATION) 'ここではじかれます。
        Exit Sub 'ここをとってもセットされない
    End If
淡幻星
記事: 183
登録日時: 2005年7月19日(火) 07:02
お住まい: 宮城県
連絡する:

#4 投稿記事 by 淡幻星 »

ファイルのパスをフルパスで指定してみて下さい。
C1000
記事: 185
登録日時: 2006年5月07日(日) 17:16
お住まい: 宮城県
連絡する:

#5 投稿記事 by C1000 »

ファイルのパスをフルパスで指定してみて下さい。
フルパスを指定するとセットできました。なので文字列の受け渡しに問題があるようなのでもう少し見直してみます。
C1000
記事: 185
登録日時: 2006年5月07日(日) 17:16
お住まい: 宮城県
連絡する:

#6 投稿記事 by C1000 »

FormatMessage関数を使ってエラーを調べたら「ファイル名、ディレクトリ名、ボリュームラベル構文が間違っています」とでました。なのでパスがおかしいようです。
C1000
記事: 185
登録日時: 2006年5月07日(日) 17:16
お住まい: 宮城県
連絡する:

成功した報告

#7 投稿記事 by C1000 »

うまくできました。淡幻星さんToshiさんありがとうございました。
返信する