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〜]をどういう風に翻訳したらよいのかわかりません。
わかる人いらっしゃいましたらご指導願います。
まず、何を実現したいかを把握したほうがよいです。
たぶんですが、これは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は「そのファイルを空にする」、なので、単純に「空のファイルを作成」したほうが早いということです。
すいません。トライしてみます。もっと研鑚を積む必要を感じております。
にしのさんすいません。
APIについて勉強したいのですが、どんなものを参考にすれば良いでしょうか?
ファイル操作系のAPIでしたら下記のようなもので十分です。
CloseHandle
CreateFile
SetFilePointer
ReadFile
WriteFile
APIの説明は
Delphiに付属しているWin32.hlpか
MSDNライブラリなどを参考にするとよいでしょう。
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解説本も出ているかもしれません。
①Delphi用のAPIをC++Builderでも使えるということですか?
②C++Builder5にDelphi4(Standard)のCD-ROMがあるがままでついてきていますがそれにもヘルプはありますか。
やってみればいいことですが。知ってたら教えて下さい。
Deiphi6 Proを買おうかどうか迷っているとこですが...
> (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)はわかりません。
いろいろありがとうございます。
ツイート | ![]() |