書籍「手作りUSB機器」を試したいと思い、ABを試し始めました。
で、その書籍は置いておいて、「Win32プログラミング講座」を
やってみていて、「~ Step11. テキスト エディタを作る ~」で
つまずいてしまいました。
「ab424.zip」を使って試していたのですが、テキストファイルの
読み込みが出来ず、いくらやっても何も出てこない状態でした。
最初はコードを打ち込んでいたのですが、ミスはないようでした。
まぁ、それでは信憑性が低いかと思い、Webからコピー&ペイスト
してみたのですが、やっぱり駄目でした。
「ここまでやって駄目なら、もしかして、、、」と思って、古いヴァージョン
「ab313.exe」を持ってきて試してみたところ、同じコードであっさり
動きました。をを、なんてこったい!!
・・・と言うことで、どうやら、AB3とAB4では違うんでしょうか。
とりいそぎ、AB4でテキストファイルを読み込み、中身をStringの変数に
入れる方法を知りたいと考えています。
ポインタだけでもご教示頂ければ幸いです。よろしくお願いします。
AB4でTextEditorのファイル読み込みでつまずきました。
Re: AB4でTextEditorのファイル読み込みでつまずきました。
> 「ab424.zip」を使って試していたのですが、テキストファイルの
> 読み込みが出来ず、いくらやっても何も出てこない状態でした。
> Webからコピー&ペイスト
> してみたのですが、やっぱり駄目でした。
サンプルプロジェクトの「TextEditor」ってのを参考にするといいですよ。
> 「ab313.exe」を持ってきて試してみたところ、同じコードであっさり
> 動きました。をを、なんてこったい!!
>
> ・・・と言うことで、どうやら、AB3とAB4では違うんでしょうか。
どこが違うかはよく分からないんですけど、ActiveBasicはヴァージョンが変わる度に大した下位互換がなく過去の遺産(ソース)が無駄になるから使いたくない、という人もいるようです。
> とりいそぎ、AB4でテキストファイルを読み込み、中身をStringの変数に
> 入れる方法を知りたいと考えています。
サンプルプロジェクト「TextEditor」の読み込み部分を改造しました。
> ポインタだけでもご教示頂ければ幸いです。よろしくお願いします。
「ポイント」じゃなくて「ポインタ」でしたかっ。ポイントだけでも教えてくれればかと思ってました。
とりあえずポインタを使ってファイルを読み込むのでしたら「TextEditor」のファイル読み込みを参考にしてみてください。
BytePtr型の操作が気になるのであればまた質問してください。
> 読み込みが出来ず、いくらやっても何も出てこない状態でした。
> 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型の操作が気になるのであればまた質問してください。
Re: AB4でTextEditorのファイル読み込みでつまずきました。
ありがとうございます。無事読み込めるようになりました。
>サンプルプロジェクトの「TextEditor」ってのを参考にするといいですよ。
ひぃ、サンプルがあるのに気づいてませんでした。
お恥ずかしい。。。
Webのコードだとコンパイルすると警告だらけで不思議だったのですが、
サンプルでは警告0(いや、まぁ、当然なんでしょうけど。。。)でした。
ヴァージョン違いで色々あるって事なんですね。覚えておきます。
で、色々弄ってみたのですが、Webにあったコードと最小の差分だと
を
にしただけで、結果は同じになったように見えました。
ちょっと「StrPtr」とか、そこいら変について調べてみるのも
そうなんですが、まずはAB4用のサンプルで出直してみます。
>「ポイント」じゃなくて「ポインタ」でしたかっ。ポイントだけでも教えてくれればかと思ってました。
あ、いや、たとえばどっかのサイトにヒントがあるのであれば、
そのURLだけでも結構ですって感じで「ポインタ」って言葉を使いました。
どうもありがとうございました。
>サンプルプロジェクトの「TextEditor」ってのを参考にするといいですよ。
ひぃ、サンプルがあるのに気づいてませんでした。
お恥ずかしい。。。
Webのコードだとコンパイルすると警告だらけで不思議だったのですが、
サンプルでは警告0(いや、まぁ、当然なんでしょうけど。。。)でした。
ヴァージョン違いで色々あるって事なんですね。覚えておきます。
で、色々弄ってみたのですが、Webにあったコードと最小の差分だと
コード: 全て選択
ReadFile(hFile,buffer,dwFileSize,VarPtr(dwAccessByte),ByVal 0)
コード: 全て選択
ReadFile(hFile,StrPtr(buffer),dwFileSize,VarPtr(dwAccessByte),ByVal 0)
ちょっと「StrPtr」とか、そこいら変について調べてみるのも
そうなんですが、まずはAB4用のサンプルで出直してみます。
>「ポイント」じゃなくて「ポインタ」でしたかっ。ポイントだけでも教えてくれればかと思ってました。
あ、いや、たとえばどっかのサイトにヒントがあるのであれば、
そのURLだけでも結構ですって感じで「ポインタ」って言葉を使いました。
どうもありがとうございました。