M1000まとめサイト
C++プログラムTips
最終更新:
匿名ユーザー
-
view
char* → ディスクリプタ
諸事情があってchar*データを、Symbianのディスクリプタで扱いたい場合
char* c_str = "abcあいうM1234"; // c_strを自前 SJIS-Unicode変換ライブラリにより変換(非公開スマソ) // ↓変換結果 char unicode[] = {97, 0, 98, 0, 99, 0, 66, 48, 68, 48, 70, 48, 77, 0, 49, 0, 50, 0, 51, 0, 52, 0, 0, 0}; TText* ttext = (TText*)unicode; TPtrC tptrc(ttext); label->SetTextL(tptrc); //label->SetTextL(iOutputString->Des());
ドコモサンプル02_FontExのCFontExLabelPageのCreateLabelLのところを差し替えると、簡単に実行&確認できると思います。
参考サイト
http://forum.newlc.com/
charとかで検索すると、
how to convert char * to TDes
http://forum.newlc.com/index.php/topic,9902.0.html
などなどが引っかかります(同様の質問が多数)。
http://forum.newlc.com/
charとかで検索すると、
how to convert char * to TDes
http://forum.newlc.com/index.php/topic,9902.0.html
などなどが引っかかります(同様の質問が多数)。
char* ← ディスクリプタ
調査中・・・
適当コード(鋭意改版中)
適当コード(鋭意改版中)
TPtrC tptrc; // どこからともなくでてきたTPtrC char unicode[1024]; Mem::Copy(unicode, tptrc.Ptr(), tptrc.Length()*2); unicode[tptrc.Length()*2] = 0;
補足
自前コード変換なんかよりも、↓とか使ったほうがいいとは思うんだけど・・・(調査中)。
UIQ 2.1 SDK
>> Developer Library
>> API Reference
>> C++ API reference
>> Character Conversion
自前コード変換なんかよりも、↓とか使ったほうがいいとは思うんだけど・・・(調査中)。
UIQ 2.1 SDK
>> Developer Library
>> API Reference
>> C++ API reference
>> Character Conversion
SJIS ⇔ Unicode
シフトジス⇔うにこーどの変換手順(注意:ここだけの話ですが、筆者は文字コードってあんまよくわかってません(瀧汗)。
- 1.mmpファイルの編集
- ライブラリ追加
LIBRARY charconv.lib
- 2.makefile再構築
- 私の環境は、VCなので、
abld makefile vc6
- 3.ソースの編集
- includeファイル追加、変換サンプル
#include <charconv.h> CCnvCharacterSetConverter* converter= CCnvCharacterSetConverter::NewLC(); CCnvCharacterSetConverter::TAvailability ta = converter->PrepareToConvertToOrFromL( KCharacterSetIdentifierShiftJis, CEikonEnv::Static()->FsSession()); if (ta != CCnvCharacterSetConverter::EAvailable) { return; } TInt state=CCnvCharacterSetConverter::KStateDefault; char* c_str = "M専ハァハァ"; TText8* ttext8 = (TText8*)c_str; TPtrC8 tptrc8(ttext8); TBuf8<128> sjisText(tptrc8); TBuf<128> unicodeText; TInt ctu=converter->ConvertToUnicode(unicodeText, sjisText, state); if (ctu == CCnvCharacterSetConverter::EErrorIllFormedInput) { return; } CleanupStack::PopAndDestroy(); //clean for converter label->SetTextL(unicodeText);
ドコモサンプル02_FontExのCFontExLabelPageのCreateLabelLのところを差し替えると、簡単に実行&確認できると思います。
参考サイト(コピペ元)
How can convert Unicode to Iso88591?(with code)
http://forum.newlc.com/index.php/topic,2901.0.html
How can convert Unicode to Iso88591?(with code)
http://forum.newlc.com/index.php/topic,2901.0.html
CのFILEによるファイルIO
やんごとなき事情があって、FILEを使わざるをえない場合
- 1. mmpファイルの編集
- include パス、ライブラリ追加
SYSTEMINCLUDE \epoc32\include SYSTEMINCLUDE \epoc32\include\libc LIBRARY estlib.lib
- 2.makefile再構築
- 私の環境は、VCなので、
abld makefile vc6
- 3.ソースの編集
- includeファイル追加、FILE使用例
#include <stdio.h> #include <string.h> // 入力・出力ファイルオープン FILE* rf = fopen("C:\\m1000.txt", "r"); FILE* wf = fopen("C:\\m1234.txt", "w"); // 入力・出力バッファ char line[1024]; char wline[1024]; TInt n = 0; while (fgets(line, 1024, rf) != NULL) //一行ずつ読み込み { // 適当に出力行を調整して sprintf(wline, "行[%04d][%04d]%s", ++n, strlen(line), line); // カキコ fputs(wline, wf); } // クローズ fclose(wf); fclose(rf);
参考ドキュメント
UIQ 2.1 SDK
>> Developer Library
>> API Reference
>> C++ API reference
>> C/POSIX Standard Library
(たぶん、このリファレンスにある関数は使えるんじゃないかなぁ・・・)
UIQ 2.1 SDK
>> Developer Library
>> API Reference
>> C++ API reference
>> C/POSIX Standard Library
(たぶん、このリファレンスにある関数は使えるんじゃないかなぁ・・・)
UIQ 2.1 SDK
>> Developer Library
>> Symbian OS Guide
>> C++ API guide
>> Base
>> C Standard Library
(ぜんぜん読んでないけど)
>> Developer Library
>> Symbian OS Guide
>> C++ API guide
>> Base
>> C Standard Library
(ぜんぜん読んでないけど)
どこかのサンプルプログラムへコピペして、ブレークポイントとか
で動作を追ってみる(というほどのものではないけどね)といいかも。
で動作を追ってみる(というほどのものではないけどね)といいかも。
もしかすると、Symbian流ファイル操作は↓なのかもしれません(苦笑)
UIQ 2.1 SDK
>> Developer Library
>> Symbian OS Guide
>> C++ API guide
>> Base
>> File Stores
UIQ 2.1 SDK
>> Developer Library
>> Symbian OS Guide
>> C++ API guide
>> Base
>> File Stores
- おお、初のTipsだw自分もこの辺でまだ悩んでたところなんで助かります(T-T)自分ももっとがんばらねば… -- ま~ (2005-08-28 14:06:16)
- でもコピペPGなんでこれでいいものか気になるところです。 -- 名無しさん (2005-08-30 00:04:02)
- 後はファイルのIOさえわかれば簡易なアプリも作れるんですけどね… -- Ryu (2005-09-07 13:54:11)
- てきとーにファイルIOを書いてみました -- 名無しさん (2005-09-08 00:17:33)
- 日本人だと文字コードがうんたらかんたらと面倒だな -- 名無しさん (2005-09-21 15:46:42)
- Symbianでファイル操作したければ、RFs, RFileといったクラスを使う必要があります。泣き所はfgetsのような改行を区切りに1行ずつ読むというのができないのが難点 -- ななし (2006-06-21 21:54:06)
- 感謝します。SJIS変換できました。 -- 名無しさん (2007-10-15 21:58:37)