DelphiのAssignFileをC++Builderに翻訳するには?


後藤  2001-11-29 21:48:47  No: 323

Delphiの処理で、
「try
AssignFile(F,FileName);
Rewrite(F);
Result:=' ';
except
on E: Exception do
Result:=E.Message;
end;

なるものがあり、これをC++Builderに書き直してみようとして、


  try{
AssignFile(F,FileName);
Rewrite(F);
return(" ");
}__except(){
on E:Exception ?
return(E->Message);
}

なんてやってみたのですが、
AssignFileやらRewriteやらが未定義で、[on E:Exception do〜]をどういう風に翻訳したらよいのかわかりません。
わかる人いらっしゃいましたらご指導願います。


にしの  2001-11-29 23:00:46  No: 324

まず、何を実現したいかを把握したほうがよいです。
たぶんですが、これはFileNameで指定されたファイルを新規作成する(存在するなら殻にする)という処理だと思います。
# AssignFile,Rewrite,ともに使ったことがないので、ヘルプからの想像です

C++Builderに直すなら、APIを使ったほうが簡単です。
try
{
  F = CreateFile(FileName.c_str(), GENERIC_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
  CloseHandle(F);
}
catch(...)
{
  // 例外
  return "ERR";
}
return "";

こんな感じです。
例外処理の方法は覚えてないです。いつも上のように例外が起きたら無視するようにしているので。
試していないので、うまく行かないかもしれないです。

AssignFileは「ファイルを開く」、Rewriteは「そのファイルを空にする」、なので、単純に「空のファイルを作成」したほうが早いということです。


後藤  2001-11-30 03:44:20  No: 325

すいません。トライしてみます。もっと研鑚を積む必要を感じております。


後藤  2001-12-09 19:11:34  No: 326

にしのさんすいません。
APIについて勉強したいのですが、どんなものを参考にすれば良いでしょうか?


横槍くん  2001-12-09 22:40:38  No: 327

ファイル操作系のAPIでしたら下記のようなもので十分です。

CloseHandle  
CreateFile  
SetFilePointer  
ReadFile  
WriteFile  

APIの説明は
Delphiに付属しているWin32.hlpか
MSDNライブラリなどを参考にするとよいでしょう。


にしの  2001-12-10 04:58:52  No: 328

MSDNライブラリは、たしか高かったですよね。
ホームページで検索することは可能です。

DelphiのCDに、日本語版のWin32ヘルプがあります。
ちょっと古いのですが。

僕が持っているAPI関連の本は、
「Win32 APIオフィシャルリファレンス改訂3版 Windowsサービス/ネットワーク編」
ISBN4-7561-3749-0
定価:本体5200円+税
「Win32 APIオフィシャルリファレンス改訂3版 グラフィック/GUI編」
ISBN4-7561-3748-2
「Windows98 APIバイブル シェル/シェルユーティリティ/印刷/IME/追加関数 編」
ISBN4-88135-734-4
定価:本体5800円+税

です。
Delphi向けではありません。
探してないのですが、Delphi向けのAPI解説本も出ているかもしれません。


後藤  2001-12-10 06:59:59  No: 329

①Delphi用のAPIをC++Builderでも使えるということですか?

②C++Builder5にDelphi4(Standard)のCD-ROMがあるがままでついてきていますがそれにもヘルプはありますか。
やってみればいいことですが。知ってたら教えて下さい。
Deiphi6 Proを買おうかどうか迷っているとこですが...


にしの  2001-12-10 08:12:04  No: 330

> (1)
これは、DelphiのVCLや、関数(プロシージャ)のことですか。
ほとんど使えると思います。
AssignFileも、もしかしたらAssign関数として登録されているかもしれません。D5のヘルプを見ると、
> ただし,下位互換性を保つために Assign も使えます。
と書いてあるので。

CreateFile, CloseHandleなどは、Win32のAPIです。
Delphiでも、Borland C++ Builderでも、Visual Basicでも、使えます。
C++ならば、ヘルプを見れば必要なインクルードファイルはわかると思います。Delphiで必要な場合、Sourceを検索するとわかります。
Sourceがない場合、Libでもわかるかもしれないです。*.dcuに対して、API名を検索すると見つかります

(2)はわかりません。


後藤  2001-12-10 21:25:23  No: 331

いろいろありがとうございます。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加