布団が俺を呼んでいる

丘山大一のぶろぐ

Delphi BOM無しでテキスト保存

ISQL.exe に食わせるスクリプトを、なぜかDelphi経由で吐き出す必要が出てきました。
で、そのためにはBOMを外してテキスト保存する必要がありました。

やり方はこんな感じ

  sl := TStringList.Create;
~sl に文字列を突っ込む
  sl.WriteBOM := False;
  sl.SaveToFile(ファイル保存先, TEncoding.UTF8);

要はsl.WriteBOM := False; が必要、ということですね。

……このやり方を全然知らなかったんで、バイト操作の方法を調べようとしていたのは内緒です……


OBJECT PASCAL HANDBOOK―マルチデバイス開発ツールDelphiのためのプログラミング言語完全ガイド

新品価格
¥6,480から
(2016/9/6 08:13時点)

コメントを書く

布団が俺を呼んでいる | RadStudio では、generics<generics> ができない?

布団が俺を呼んでいる

丘山大一のぶろぐ

RadStudio では、generics<generics> ができない?

このごろDelphi と Firebird の記事ばかりなような。
で、今回は Delphi というか Rad Studio というかのお話。

Generics の中に Generics はダメ?

なんか変だな、とは思っていたんですがようやく原因が分かりました。
こんな感じのfunctionを宣言をすると、「Ctrl + Shift+ C」でエラーが出て、スケルトン生成できなくなります。
function hoge : TList<TList<string>>;
スケルトン生成できないだけで、手でゴリゴリ書けばちゃんとコンパイルは通ります。

もちろんというかなんというか、下記はOK.
function hoge : TList<TStringList>;

まあ、 TList<string> だったら TStringList で置き換えちゃえば大体いけるのでいいですけど、他の場合はどうすれば……。
IDE側のバグだとしか思えないんですが……
検証しているXE5がダメなだけで、新しいヤツだと直ってるのかな?

結論

VS + C# を使えば全部解決。





OBJECT PASCAL HANDBOOK―マルチデバイス開発ツールDelphiのためのプログラミング言語完全ガイド

新品価格
¥6,480から
(2016/9/6 08:13時点)

コメントを書く