0

もう一度、SymbiansDescriptorsと格闘しています...

char fileName[128] = "somethingsomething";

次に、メンバーiNameを持つTEntryオブジェクトがあります。このiNameにfileNameを割り当てたいと思います。私はそれを次のようにしようとしました:

TEntry anEntry;

anEntry.iName.Copy((TText8* )rEntity->fileName);

-

no instance of overloaded function " TBufC::Copy [with S=256]" matches the argument list
        argument types are: (TText8 *)
        object type is: TBufC<256>
                    anEntry.iName.Copy((TText8* )rEntity->fileName);

ファイル名をentry.inameにコピーするために別の関数を使用する必要がありますか?

どうもありがとう

4

2 に答える 2

1

TBufC は変更できません (C は「定数」を表します)。コピー機能はありません。

http://developer.symbian.com/main/documentation/sdl/symbian94/sdk/doc_source/reference/reference-cpp/E32_EKA2/TBufCClass.html

次のようなものを試してください:

iName.Des().Copy(TPtrC8((TText8*)fileName));

また

TBuf<256> tmp;  // or HBuf if you're worried about using so much stack
tmp.Copy(TPtrC8((TText8*)filename));
iName = tmp;

iName のタイプを変更できない場合は、fileName を単なる char 配列ではなく記述子に格納するように変更できますか? あなたが発見したように、2つを混ぜるのは苦痛です。

これはすべて、8 ビット文字が UTF-8 ではなく ascii または ISO-latin であることを前提としています。後者の場合は、文字エンコーディングも変換する必要があります。

于 2009-08-12T13:20:45.770 に答える
0

ゼロで終わるconst char []データを でラップしTPtrCて、 に渡すことができる記述子にしCopyます。ただし、TEntry::iName定数TBufCですが、それを呼び出しDesて変更可能な を取得できTPtrます。

anEntry.iName.Des().Copy(TPtrC8((TText8 *)rEntity->fileName));
于 2009-08-12T12:58:35.240 に答える