開発ブログ - Delphi 過去ソースからモバイルへポーティング(文字列処理1)
過去のプログラムから、モバイルアプリケーションへポーティングをする際に問題になることは色々ありますが、ありがちなのは文字列のインデックスの問題でしょうか。
Delphi モバイル コンパイラの場合、文字列は 0 から始まるインデックス方式を
採用しています。さらに、今後、文字列は不変(一定)になる見込みです。
from デスクトップ アプリケーションから iOS アプリケーションへの Delphi コードの移行
結構これは影響大きいですね。
この手の処理はロジックのコードのほうが影響を受けるように思います。
さらに今後、文字列は一定になると!
可変文字列を扱う場合は TStringBuilder を使うとか…
これについては私の場合、文字列の一部を変更する処理はあまり書かないので、影響はなさそうですけれど。
さて、今後に向けてどのように対応しておけば良いのでしょうか?
String -> PChar 変換
私のソースコードでは結構あるのが以下のようなものです
var
S: String;
Ptr: PChar;
begin
S := 'foo';
Ptr := @S[1];
end;
これは次のように書き換えます。
var
S: String;
Ptr: PChar;
begin
S := 'foo';
Ptr := PChar(S);
end;