喫茶XRAYトップページ

[▲前のスレッド]

[6697] Delphi XE3のTDynArrayTypeInfoについて返信 削除
2013/2/5 (火) 00:32:33 Sara
みなさん、こんばんは

Delphi XE3にて、System.pas内のDynamic array supportの記述が変更になっています。

name:String[0];の記述が以下の通り name: Byte;になっています。


  TDynArrayTypeInfo = packed record
    kind: Byte;
    name: Byte; {string[0];}
    elSize: Longint;
    elType: ^PDynArrayTypeInfo;
    varType: Integer;
  end;


で、いくつか使っているコンポーネントの中に以下の記述があり、コンパイルエラーになります。

 Inc(PChar(DynArrayTypeInfo), Length(DynArrayTypeInfo.name));

このエラーを回避する方法を探しています。

まぁ、必要なソースの上部にString[0]で定義しなおすと当然コンパイルは通りますが・・・
まっとうな方法とは言えないので・・・(^^;


ご教示いただけるとありがたいです。

[6698] Re:Delphi XE3のTDynArrayTypeInfoについて返信 削除
2013/2/5 (火) 00:47:45 Mr.XRAY
▼ Saraさん,

>   TDynArrayTypeInfo = packed record
>     kind: Byte;
>     name: Byte; {string[0];}
>     elSize: Longint;
>     elType: ^PDynArrayTypeInfo;
>     varType: Integer;
>   end;


今,Delphi XE2 の定義を見たのですが,String 型になっていますね.
これは,また大胆な変更ですね.
Byte 型になったということは,Ansi 文字だけを扱うという意味でしょうね.
多分.
では,お休みなさい.
ちょっと振ってみたかっただけですよん(笑)


[6699] Re2:Delphi XE3のTDynArrayTypeInfoについて返信 削除
2013/2/5 (火) 01:00:38 Mr.XRAY
> 今,Delphi XE2 の定義を見たのですが,String 型になっていますね.

http://docwiki.embarcadero.com/Libraries/XE2/ja/System.TDynArrayTypeInfo
http://docwiki.embarcadero.com/Libraries/XE3/ja/System.TDynArrayTypeInfo

Byte なのね.PByte じゃなくて.ふ〜ん.まずい.ホントに眠い.


[6700] Re:Delphi XE3のTDynArrayTypeInfoについて返信 削除
2013/2/5 (火) 02:26:36 DEKO 〔HomePage
>  Inc(PChar(DynArrayTypeInfo), Length(DynArrayTypeInfo.name));

Inc(PByte(DynArrayTypeInfo), PDynArrayTypeInfo(DynArrayTypeInfo).name);
ですかね。

# XE3 の System.pas 内に上のようなコードがありました。

[6701] Re2:Delphi XE3のTDynArrayTypeInfoについて返信 削除
2013/2/5 (火) 09:58:21 Sara
▼Mr.XRAYさん ▼ DEKOさん

> >  Inc(PChar(DynArrayTypeInfo), Length(DynArrayTypeInfo.name));
>
> Inc(PByte(DynArrayTypeInfo), PDynArrayTypeInfo(DynArrayTypeInfo).name);
> ですかね。
>
> # XE3 の System.pas 内に上のようなコードがありました。


おっと・・・System.pas内を検索しようとは全く考えが及びませんでした・・(^^;

なるほどですね・・・

とりあえず、これでコンパイルを通していました・・・(^^;

  Inc(PChar(DynArrayTypeInfo), DynArrayTypeInfo.name);
(何をしているのか不明だったので、本当にコンパイルを通しただけですが)

教えていただいた通りに修正して様子を見てみます。

ありがとうございました。

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