2017-10-15 25 views
0

Array of AnsiStringをスライスし、Array of AnsiStringを返す関数があるかどうかを知りたいと思います。 Copy関数はArray of Stringを返すので、私は別の解決策を求めてオンラインで検索しましたが、何も見つかりませんでした。ANSI文字列の配列をコピーして、ANSI文字列の別の配列を取得する方法

解決方法はありますか?

私はフリーパスカルを使用しています。

+0

シンプルに独自の関数を書くことはできますか? –

+0

@DavidHeffernanそれは一つの方法です。 –

+0

申し訳ありませんが、私はあなたのqをかなり理解できません:あなたは「コピー」はしたくないと思いますか? – MartynA

答えて

4

コピーXAnsiStringある場合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です。

関連する問題