|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"改行コード変換(\n←→CR+LF)"
☆説明
chgEnN2CrLf()は文字列中の \n を CRLF に変換します。
chgCrLf2EnN()は文字列中の CRLF を \n に変換します。
☆準備
1.Form1 の Memo1,Button1,Button2 を貼り付けます。
2.ソースを追加して、Button1,Button2を押せばテストできます。
☆補足
・Delphi3.1 でテスト。
・CSVデータ中に改行を埋め込む場合に使っています。
[ソース本体]
----------------------------------------------------------------------
・・・(省略)
private
{ Private 宣言 }
Function chgEnN2CrLf(source: String): String;
Function chgCrLf2EnN(source: String): String;
・・・(省略)
Function TForm1.chgEnN2CrLf(source: String): String;
var
pos: Integer; // \nの位置
work: AnsiString; // \n→CR+LF変換用
begin
// \n→CR+LFに変換
work := source;
pos := 1; // 0以外であれば良い
while pos <> 0 do
begin
pos := AnsiPos( '\n', work );
if pos = 0 then Break;
work[pos + 0] := #13; // CR
work[pos + 1] := #10; // LF
end;
Result := work;
end;
Function TForm1.chgCrLf2EnN(source: String): String;
var
pos: Integer; // CR+LFの位置
work: AnsiString; // CR+LF→\n変換用
begin
// CR+LF→\nに変換
work := source;
pos := 1; // 0以外であれば良い
while pos <> 0 do
begin
pos := AnsiPos( #13#10, work );
if pos = 0 then Break;
work[pos + 0] := '\';
work[pos + 1] := 'n';
end;
if Copy(work, Length(work) - 1, 2) = '\n' then
begin
// (TMemo使用時)文字列の最後に付いた、\nを削除する
work := Copy(work, 1, Length(work) - 2);
end;
Result := work;
end;
----------------------------------------------------------------------
[テストソース]
----------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
chgStr: AnsiString;
begin
// メモに文字列をセット
chgStr := 'テスト\nここで改行されるはず\nほら、このように';
memo1.Clear;
memo1.Lines.Add( chgEnN2CrLf( chgStr ) );
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// メモから文字列取り出し
ShowMessage( chgCrLf2EnN( memo1.Text ) );
end;
----------------------------------------------------------------------
98/1/18(日) 09:18pm LDM03756 佐藤 充男
Original document by 佐藤 充男 氏 ID:(LDM03756)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|