by 7 » 2006年5月06日(土) 23:45
> 「ab424.zip」を使って試していたのですが、テキストファイルの
> 読み込みが出来ず、いくらやっても何も出てこない状態でした。
> Webからコピー&ペイスト
> してみたのですが、やっぱり駄目でした。
サンプルプロジェクトの「TextEditor」ってのを参考にするといいですよ。
> 「ab313.exe」を持ってきて試してみたところ、同じコードであっさり
> 動きました。をを、なんてこったい!!
>
> ・・・と言うことで、どうやら、AB3とAB4では違うんでしょうか。
どこが違うかはよく分からないんですけど、ActiveBasicはヴァージョンが変わる度に大した下位互換がなく過去の遺産(ソース)が無駄になるから使いたくない、という人もいるようです。
> とりいそぎ、AB4でテキストファイルを読み込み、中身をStringの変数に
> 入れる方法を知りたいと考えています。
サンプルプロジェクト「TextEditor」の読み込み部分を改造しました。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
Dim hEdit As Long
Dim ofn As OPENFILENAME
Dim hFile As Long
Dim dwFileSize As DWord
Dim dwAccessByte As DWord
Dim FileName[MAX_PATH-1] As Byte
Dim buffer As String
'OPENFILENAME構造体の初期化
FillMemory(VarPtr(ofn),Len(ofn),0)
ofn.lStructSize=Len(ofn)
ofn.hwndOwner=hMainWnd
ofn.lpstrFilter=Ex"テキスト ファイル(*.txt)\0*.txt\0すべてのファイル(*.*)\0*\0\0"
ofn.nFilterIndex=1
ofn.lpstrFile=FileName
ofn.nMaxFile=MAX_PATH
ofn.lpstrTitle="ファイルを開く"
ofn.Flags=OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST
ofn.lpstrDefExt="*"
'「ファイルを開く」ダイアログ ボックスを表示
If GetOpenFileName(ofn)=0 Then Exit Sub
'-------------------
' ファイル オープン
'-------------------
hFile=CreateFile(ofn.lpstrFile, GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, _
ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
If hFile=INVALID_HANDLE_VALUE Then
MessageBox(hMainWnd,"ファイルオープンに失敗","TextEditor",MB_OK or MB_ICONEXCLAMATION)
Exit Sub
End If
'ファイルサイズを取得し、バッファを確保する
dwFileSize=GetFileSize(hFile,0)
buffer=ZeroString(dwFileSize+1)
'ファイルの内容を文字列変数bufferに読み込む
ReadFile(hFile,StrPtr(buffer),dwFileSize,VarPtr(dwAccessByte),ByVal 0)
buffer[dwAccessByte]=0
'ファイル ハンドルを閉じる
CloseHandle(hFile)
'-------------------
'EditBox1のハンドルを取得
hEdit=GetDlgItem(hMainWnd, EditBox1)
'hEditにバッファをセットする
SetWindowText(hEdit,buffer)
'hEditにフォーカスをセット
SetFocus(hEdit)
追記。
> ポインタだけでもご教示頂ければ幸いです。よろしくお願いします。
「ポイント」じゃなくて「ポインタ」でしたかっ。ポイントだけでも教えてくれればかと思ってました。
とりあえずポインタを使ってファイルを読み込むのでしたら「TextEditor」のファイル読み込みを参考にしてみてください。
BytePtr型の操作が気になるのであればまた質問してください。
> 「ab424.zip」を使って試していたのですが、テキストファイルの
> 読み込みが出来ず、いくらやっても何も出てこない状態でした。
> Webからコピー&ペイスト
> してみたのですが、やっぱり駄目でした。
サンプルプロジェクトの「TextEditor」ってのを参考にするといいですよ。
> 「ab313.exe」を持ってきて試してみたところ、同じコードであっさり
> 動きました。をを、なんてこったい!!
>
> ・・・と言うことで、どうやら、AB3とAB4では違うんでしょうか。
どこが違うかはよく分からないんですけど、ActiveBasicはヴァージョンが変わる度に大した下位互換がなく過去の遺産(ソース)が無駄になるから使いたくない、という人もいるようです。
> とりいそぎ、AB4でテキストファイルを読み込み、中身をStringの変数に
> 入れる方法を知りたいと考えています。
サンプルプロジェクト「TextEditor」の読み込み部分を改造しました。
[hide][code] Dim hEdit As Long
Dim ofn As OPENFILENAME
Dim hFile As Long
Dim dwFileSize As DWord
Dim dwAccessByte As DWord
Dim FileName[MAX_PATH-1] As Byte
Dim buffer As String
'OPENFILENAME構造体の初期化
FillMemory(VarPtr(ofn),Len(ofn),0)
ofn.lStructSize=Len(ofn)
ofn.hwndOwner=hMainWnd
ofn.lpstrFilter=Ex"テキスト ファイル(*.txt)\0*.txt\0すべてのファイル(*.*)\0*\0\0"
ofn.nFilterIndex=1
ofn.lpstrFile=FileName
ofn.nMaxFile=MAX_PATH
ofn.lpstrTitle="ファイルを開く"
ofn.Flags=OFN_FILEMUSTEXIST or OFN_HIDEREADONLY or OFN_PATHMUSTEXIST
ofn.lpstrDefExt="*"
'「ファイルを開く」ダイアログ ボックスを表示
If GetOpenFileName(ofn)=0 Then Exit Sub
'-------------------
' ファイル オープン
'-------------------
hFile=CreateFile(ofn.lpstrFile, GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, _
ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
If hFile=INVALID_HANDLE_VALUE Then
MessageBox(hMainWnd,"ファイルオープンに失敗","TextEditor",MB_OK or MB_ICONEXCLAMATION)
Exit Sub
End If
'ファイルサイズを取得し、バッファを確保する
dwFileSize=GetFileSize(hFile,0)
buffer=ZeroString(dwFileSize+1)
'ファイルの内容を文字列変数bufferに読み込む
ReadFile(hFile,StrPtr(buffer),dwFileSize,VarPtr(dwAccessByte),ByVal 0)
buffer[dwAccessByte]=0
'ファイル ハンドルを閉じる
CloseHandle(hFile)
'-------------------
'EditBox1のハンドルを取得
hEdit=GetDlgItem(hMainWnd, EditBox1)
'hEditにバッファをセットする
SetWindowText(hEdit,buffer)
'hEditにフォーカスをセット
SetFocus(hEdit)[/code][/hide]
追記。
> ポインタだけでもご教示頂ければ幸いです。よろしくお願いします。
「ポイント」じゃなくて「ポインタ」でしたかっ。ポイントだけでも教えてくれればかと思ってました。
とりあえずポインタを使ってファイルを読み込むのでしたら「TextEditor」のファイル読み込みを参考にしてみてください。
BytePtr型の操作が気になるのであればまた質問してください。