喫茶XRAYトップページ

[スレッド全体
]

[4732] Re3:XEのバグでしょうか?・・PS返信 削除
2011/5/10 (火) 15:03:14 DEKO 〔HomePage
SizeOf() はバイト数を返します。

StrTempPath: Array[0..MAX_PATH] of Char;

StrTempPath: Array[0..MAX_PATH] of AnsiChar; <- ANSI 版 Delphi
StrTempPath: Array[0..MAX_PATH] of WideChar; <- Unicode 版 Delphi

ですので、Unicode 版 Delphi で SizeOf(StrTempPath) を実行すると
522 ("(260 + 1) * 2") が返ってきます。

一方、GetTempPath() の引数は "TCHAR 単位" です。
TCHAR というのは...

ANSI の時    → 1 エレメント = バイト
Unicode の時 → 1 エレメント = ワード

ですので、正しくは

GetTempPath(Length(StrTempPath), StrTempPath)

となります (ANSI でも Unicode でも)。

[SizeOf の呼び出し (DocWiki)]
http://docwiki.embarcadero.com/RADStudio/XE/ja/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92_Unicode_%E5%AF%BE%E5%BF%9C%E3%81%AB%E3%81%99%E3%82%8B#SizeOf_.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97

[4733] Re4:XEのバグでしょうか?・・PS返信 削除
2011/5/10 (火) 15:06:26 Mr.XRAY
わっ,DEKOさんとダブった.1秒違い
私の場合にエラー発生がないのは,文字数の違い等,たまたまでしょうね.
では,参考リンク

sizeof
http://docwiki.embarcadero.com/RADStudio/ja/Sizeof

[4734] Re5:XEのバグでしょうか?・・PS返信 削除
2011/5/10 (火) 15:11:28 Mr.XRAY
あっ,DEKOさんのリンクのほうがいい!
残念... ちょっと悔しい...


[4735] Re5:XEのバグでしょうか?・・PS返信 削除
2011/5/10 (火) 15:15:03 DEKO 〔HomePage
> わっ,DEKOさんとダブった.1秒違い
わたしまけましたわ...orz

> 私の場合にエラー発生がないのは,文字数の違い等,たまたまでしょうね.
StrTempPath の後のアドレスに有効なデータが格納されてないか、
データ破壊されても問題なければ動作する可能性はありますね。

# なまじ動いてしまうと検証が難しいんですよね。

[4736] Re6:XEのバグでしょうか?・・PS返信 削除
2011/5/10 (火) 15:25:20 Mr.XRAY
> わたしまけましたわ...orz

おっ,私の方が早かった.
むふふ.勝ったぜい! ってはり合ってどうする.

> # なまじ動いてしまうと検証が難しいんですよね。

クライアントに納入したらエラーが... とか.嫌なパターンです.
それにしても,いよいよWindows 7の世界が始まってきている実感がします.


[4737] Re7:XEのバグでしょうか?・・PS返信 削除
2011/5/10 (火) 15:41:42 Syake
・・・・全然違っとった。m(__)m

GetTempPath(Length(StrTempPath),StrTempPath);
でピンポーンでした。

ラベルが違った。 う〜む。

[4738] Re8:XEのバグでしょうか?・・PS返信 削除
2011/5/10 (火) 15:46:03 Mr.XRAY
▼ Syakeさん
> ・・・・全然違っとった。m(__)m

えっ?,ゴメン.Syakeさんのレス,全然見ていなかった... m(_ _)m

>//    GetTempPath(SizeOf(StrTempPath),StrTempPath);//------>Error
>StrTempPath:='C:\Windows\';//---->OK


これだけ読んでレスしていまいました.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82