Tips

4D Handlesについての情報

日付2001/12/07
ID01-794
バージョン6.5.x and 6.7.x
プラットフォームWindows and Mac

C/C++に基づいたhandleの代わりに開発者が4D Handlesを使用する必要がある時があります。PictsとBLOBsと仕事をする時この例がそうでしょう。4Dの中のこれらのデータタイプは、PublicTypes.hにchar**として定義されるPA_Handleを返します。malloc、NewHandleなどのような基礎的なmemory management callsを交換するという4D's Handle callsを使用してはなりません。これらは4Dストラクチャのために単に使用されるべきです。

新しい4D Handleを作成するために、開発者はコマンドをPA_NewHandleと呼ぶことができます。私たちがメモリを割り当てる呼び出しに対処しているので、新しいHandleを作成する十分なメモリがあったことを確かめるためにPA_NewHandleからの返り値を常にチェックするべきです。

例:

aHandle = PA_NewHandle(1024);
if ( aHandle == 0L )
{
// error occurred
}
else
// continue with your code


一旦handleの使用を終えたならば、handleを処分する必要があります。これをするためには単にPA_DisposeHandleコマンドを呼んでください。私たちの上記の例を拡張するために現在持っています:

aHandle = PA_NewHandle(1024);
if ( aHandle == 0L )
{
// error occurred
}
else
// work with the new handle
PA_DisposeHandle(aHandle); // we are finished and need to free memory

Handlesでメモリを動かす必要があれば、データが変わるかあるいは他のプロセスによって触れられるのを防ぐためにデータを移動させる前に、Handleをロックしなければなりません。HandleをロックするためにPA_LockHandleを呼びます。Handleを解放するために再びPA_UnlockHandleを呼びます。

例:

aHandle = PA_NewHandle(1024);
if ( aHandle == 0L )
{
//error occurred
}
else
{
ptr = PA_LockHandle(aHandle); //ptr is a char*
//copy the handle or some other function
PA_UnlockHandle(aHandle);
}

メモリ分割を防ぐために終了された時常にhandleを開くべきです。

4Dについてのより詳細は、Handleページ85の「4D Plug-in API Reference.pdf」を参照します。