Array of AnsiString
をスライスし、Array of AnsiString
を返す関数があるかどうかを知りたいと思います。 Copy
関数はArray of String
を返すので、私は別の解決策を求めてオンラインで検索しましたが、何も見つかりませんでした。ANSI文字列の配列をコピーして、ANSI文字列の別の配列を取得する方法
解決方法はありますか?
私はフリーパスカルを使用しています。
Array of AnsiString
をスライスし、Array of AnsiString
を返す関数があるかどうかを知りたいと思います。 Copy
関数はArray of String
を返すので、私は別の解決策を求めてオンラインで検索しましたが、何も見つかりませんでした。ANSI文字列の配列をコピーして、ANSI文字列の別の配列を取得する方法
解決方法はありますか?
私はフリーパスカルを使用しています。
コピーX
がAnsiString
ある場合array of AnsiString
に、それがコピーされます(またはスライス)別のarray of X.
に任意のarray of X
をコピーします。
次の証明プロジェクトは、結果がarray of AnsiString
であることを示しています。これは、個々の「文字」を扱うためです。結果がUnicodeString
だった場合、最初の文字のみが表示されます('One'
は'O'#0'n'#0'e'#0#0#0
という単一の "bytes"になるため、ループは'O'
の後に停止します)。
program Project1;
uses
SysUtils;
type
TAnsiStringArray = array of AnsiString;
procedure Main;
var
A, B: TAnsiStringArray;
I: Integer;
P: PAnsiChar;
begin
A := TAnsiStringArray.Create('Zero', 'One', 'Two', 'Three');
{ Plain Copy, nothing special: }
B := Copy(A, 1, 2); { Copies 'One' and 'Two' }
for I := Low(B) to High(B) do
begin
P := PAnsiChar(B[I]);
while P^ <> #0 do
begin
Write(P^, '-');
Inc(P);
end;
Writeln;
end;
end;
begin
Main;
Readln;
end.
出力:
O-n-e-
T-w-o-
だから、特別な何かをする必要はありません。それだけでCopy
を使用してください。
WindowsではFPC 3.0.0です。
シンプルに独自の関数を書くことはできますか? –
@DavidHeffernanそれは一つの方法です。 –
申し訳ありませんが、私はあなたのqをかなり理解できません:あなたは「コピー」はしたくないと思いますか? – MartynA