ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月29日(金) 07:43

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - バイナリファイルの読み方がわかりません!
作成者 メッセージ
  記事の件名:   引用付きで返信する
そもそも初心者さんの考えているバイナリモードはVBのバイナリモードで、
7さんの考えているバイナリモードはCのバイナリモードだったのではないかと思います。

だからお互い微妙に噛み合ってないように見受けられました。
今更ながらで、すいません。
投稿記事 Posted: 2006年5月12日(金) 18:13
  記事の件名:  Re: バイナリファイルの読み方がわかりません!  引用付きで返信する
インターネットで調べたら次のホームベージにありました。
http://orios.s151.xrea.com/
いろいろありがとうがざいました。
投稿記事 Posted: 2006年5月12日(金) 09:30
  記事の件名:  Re: バイナリファイルの読み方がわかりません!  引用付きで返信する
> > モード指定もなにもActiveBasicはバイナリモードでしか開くことができません。
> とありますが、バイナリで書き込む方法はどうするのでしょうか?
> ヘルプを見ながら作ったのですが読み込み方は次の方法でよろしいのでしょうか?
Win32APIを直接弄る人間で、Open関数などなど使ったことがないのでちょっと変かもしれません。
というかバイナリに関する知識がないので全く違うことしてるかもしれません...。 とりあえずファイルには "12" じゃなくて "4950" と出力されています。
これでいいんでしょうか?
投稿記事 Posted: 2006年5月08日(月) 20:12
  記事の件名:  Re: バイナリファイルの読み方がわかりません!  引用付きで返信する
> モード指定もなにもActiveBasicはバイナリモードでしか開くことができません。
とありますが、バイナリで書き込む方法はどうするのでしょうか?
ヘルプを見ながら作ったのですが読み込み方は次の方法でよろしいのでしょうか?
コード:
’書き込み
Dim buffer As String
Dim byt As Byte
buffer="12"
Open "write.txt" as #1 ’当然のことながらファイルはバイナリにはならない 
Field #1,2
Put #1,1,buffer
Close #1

’読み込み
buffer=""
Open "write.txt" as #2
Field #2,2
Get #2,1,buffer
Close #2
byt=Asc(buffer)
MessageBox(0,Str$(byt),"ファイルの中身",MB_OK)
投稿記事 Posted: 2006年5月08日(月) 16:15
  記事の件名:   引用付きで返信する
ABにはVBのバイナリモードに相当するものはありません。
API関数を使って読み込むのが良いでしょう。

エンディアン変換にはWinSockの関数が使えます。
コード:
#strict
#prompt

TypeDef u_short = Word
TypeDef u_long = DWord
Declare Function htons Lib "wsock32.dll" (netshort As u_short) As u_short
Declare Function htonl Lib "wsock32.dll" (netshort As u_long)  As u_long
Declare Function ntohs Lib "wsock32.dll" (netshort As u_short) As u_short
Declare Function ntohl Lib "wsock32.dll" (netshort As u_long)  As u_long

Print Hex$(htons(&habcd)) 
Print Hex$(htonl(&h12345678)) 
Print Hex$(ntohs(&hcdab)) 
Print Hex$(ntohl(&h78563412))
nはネットワークエンディアン,hはホストエンディアンを意味します。
ネットワークエンディアン = ビックエンディアン
ホストエンディアン = 今使っている環境のエンディアン(x86などでは当然リトルエンディアン)
投稿記事 Posted: 2006年5月07日(日) 00:03
  記事の件名:  Re: バイナリファイルの読み方がわかりません!  引用付きで返信する
> VBでしたら、バイナリモードで開くのが普通ですが、AB6ではモード指定がみあたりません。どのようにすればよいのでしょうか?
どうでもいいツッコミで始めますけど、VB6とABの間違いですよね?
モード指定もなにもActiveBasicはバイナリモードでしか開くことができません。

> また、エンディアン変換の方法も教えてほしいのですが・・・・・
エンディアン変換って初めて聞いたので間違ってるかもしれませんけど、変数の型を変換したいならAs演算子を使います。
コード:
Dim i As Integer
Dim d As Double

	d=0.5
	i=d As Integer	' 普段はInt関数やFix関数で整数に変換しますけど...
投稿記事 Posted: 2006年5月06日(土) 23:34
  記事の件名:  バイナリファイルの読み方がわかりません!  引用付きで返信する
VBでしたら、バイナリモードで開くのが普通ですが、AB6ではモード指定がみあたりません。どのようにすればよいのでしょうか?また、エンディアン変換の方法も教えてほしいのですが・・・・・
投稿記事 Posted: 2006年5月06日(土) 22:18

全ての表示時間は UTC+09:00 です


ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean