【Delphi互換!?】FreePascal/Lazarus その2【GPL】

2009/12/25(金) 02:46:18
(クロス)オープンソースコンパイラ FreePascal [i386/68K/PPC/ARM/SPARC]
http://www.freepascal.org/

オープンソース開発ライブラリ等 [IDE/GUI環境 Lazarus]
http://www.lazarus.freepascal.org/

FreePascal/Lazarusのメーリングリスト(Pascalにホエロ!)
ttp://www.freeml.com/lazarus

Q:これで作ったソフトは自動的にGPLになるの?

A:制限付き LGPL だから、自分が作ったソースは GPL にする必要は無い
例え FreePascal 付属のライブラリにリンクしていても GPL にはしなくて良い
http://www.freepascal.org/faq.html#general-license
2015/12/10(木) 13:51:45.92ID:wPB2XwQl
ラザルス/パスカルの入門用の日本語の書籍ってある?
2015/12/10(木) 13:51:47.70ID:B0WYbo6E
lazarusでopen janeをコンパイル出来ませんか?
2015/12/10(木) 16:05:19.78ID:wwtNApqI
>>562
パスカル言語自体の入門なら、古いDelphi用の書籍を図書館で借りたり
古本屋でゲットすれば十分だと思うよ。
stringがUTF16でなくUTF8だというのさえ気をつければ
なんとかなると思うよ。

IDEの使い方の入門は、DelphiやVS C#などのIDE使ったことある人なら
適当に触ってるうちになんとかなると思うよ。
2015/12/10(木) 16:13:28.25ID:wwtNApqI
>>563
修正無しでコンパイルはできないと思うよ。
でもC++から移植するよりは絶対楽だから勉強のつもりで移植してみるのはいいかもね。
他人のコードを見るのが何よりも勉強になるし。

ちなみに今からラザロで新規プロジェクト作るなら先日出たばかりの
Lazarus 1.6RC1 で作り始めたほうが絶対によいと思うよ。
FPC 3.0、特にコードページ文字列型にフル対応してるから。
2015/12/10(木) 18:08:42.14ID:Uyd42IiD
>>560
ああ、古臭いは言い過ぎかもしれない。

> 変数スコープを縮めるってのは例えばforループ内でのみ有効なローカル変数が欲しいとかそういうこと?
そうそう、使う直前での定義とかそんなの。先頭に戻るのがめんどいような長い関数は書くなって思想かもしれないけど。
あと、最近はやり (?) の型推論とか。
2015/12/10(木) 18:26:06.61ID:wwtNApqI
>>566
>そうそう、使う直前での定義とかそんなの。
確かにC++で取り入れられたときはうらやましかったけど、
今はエディタが発達して自動定義とかしちゃうからな〜
見込み薄かもね。
そういえばbegin 、end、then とか打つの面倒とかいう意見も昔はあったけど
エディタが自動入力しちゃう時代だしね〜

型推論はジェネリクス絡みでそのうちある程度はできるようになるだろうね。
まあスクリプト言語じゃないので、実行速度を犠牲にしてまではできない
という限界はあるだろうけど。RTTIみたいに、便利だけど組み込むと重くなる
みたいなのもあるから。
2015/12/11(金) 07:39:54.62ID:5f66mx0p
>>567
> そういえばbegin 、end、then とか打つの面倒とかいう意見も昔はあったけど
自分は Shift + ホームポジションから離れたカッコを多用する C 系よりは アルファベットで begin end 書く方がいいな。
仕事ではどうしても C 系の言語が多いので慣れてしまったが。

型推論は、var で型を指定しておいて、.Create だけで生成できるとかが Pascal 的なような気がした。
2015/12/14(月) 16:02:55.66ID:jrJGPcXG
Lasarus 1.6 では component/googleapis なるものがあるな
2016/01/06(水) 09:53:07.11ID:NFROdDVv
CustomDrawnをインストールし、ボタンなどを配置してみましたが、どれもコンパイルが通りません。
1.4.4、1.6RCもダメでgithubの最新版も通りませんでした。
OSはWindows7です。
カラーボタンを使いたいのでCustomDrawnが良いのですが、使えた方いますか。
2016/01/06(水) 14:08:20.57ID:CjQqR9Km
確か最近修正があった気がするからtruncでないとだめかも。

>カラーボタンを使いたい
ほんとにそれだけの理由なら標準のウィジェットでもできるよ。
CustomDrawnだと日本語入力とかできないしデメリットのほうが多い気がする。
2016/01/06(水) 15:40:56.45ID:NFROdDVv
>ほんとにそれだけの理由なら標準のウィジェットでもできるよ。
どのコンポーネントでできるの?

今のところCustomDrawnで日本語を使う予定がないので、英語でも良いんですけどね。。
2016/01/06(水) 21:17:50.57ID:NFROdDVv
BGRA Controlでできたからこれでいいや。
ありがとう。
あとはCaptionを2行にする方法を考えねば。
TButtonでは2行にできたけどね。
2016/01/07(木) 08:13:29.34ID:a/3WDvAp
今が一番楽しい過程だね。
すぐにできると思うから頑張れ!
2016/01/07(木) 12:19:25.71ID:gX24XSHP
IDE は一つのウィンドウにして欲しいな。
複数開いてそれぞれのモニタにとかいうのが気軽にできん。
2016/01/07(木) 14:33:28.16ID:a/3WDvAp
やったことないけどドッキングに対応してたはずだよ。
2016/01/07(木) 23:00:29.83ID:gX24XSHP
えー、そうだったっけ。
またそのうち調べてみよう。
2016/01/09(土) 19:57:11.08ID:fothuBCk
ドッキングで検索するとすぐに出てくるよ。
慣れたこともあるけどでもすぐに戻した。

だんだん、delphiよりも使いやすくなってきた。
2016/01/14(木) 15:35:51.69ID:6X801Scf
laztoapkで教えて下さい。
Windowsでプログラムができあがってandroidでもと思い、laztoapkでAPKを作ったのですがタイマーアプリなってしまいます。
テンプレートから読んできているようなので、そこを変更しようと思いましたがわかりません。
どのファイルを修正したらよいでしょうか。
2016/01/18(月) 12:55:25.72ID:q56KQpC7
日本語でおk
2016/01/23(土) 20:47:52.62ID:D4qGQ1Np
androidの簡単なプログラムを作っています。
wikiを見ながらsoまでできたのですが、次にどうしたらいいのでしょうか。
見本のプロジェクトをいただけるとうれしいのですが。
582デフォルトの名無しさん
垢版 |
2016/01/24(日) 18:48:57.02ID:p6kDIgY3
apkを作る
2016/01/24(日) 20:21:03.36ID:Uk5KU7qQ
真面目に頼むよ〜〜
2016/01/25(月) 11:20:48.12ID:vXkDYhH7
というかsoできたならあとは言語関係ない
(Lazarus特有の問題はない)よね。
2016/01/25(月) 13:20:14.70ID:5K/mn6Ow
soだよ
2016/01/26(火) 10:02:27.99ID:Dinjng1c
soですね
2016/02/05(金) 20:11:14.14ID:KzMEKa8Y
やっとandroidにコンパイルできた。
javaの事はさっぱりわからんから、作れただけでもよしとするか。
TButtonの背景は、やっぱり色が付かないね。
2016/02/06(土) 12:08:28.51ID:BlYk2woR
TButtonがWindowsのボタンコントロールを使用しているので
ボタンの色はWindowsが決定してしまうからどうにもならない
という問題だったキガス。
というわけで既出のとおりWindowsのボタンコントロールに依存しない
カスタムボタンを使用するしかない。
2016/02/06(土) 13:23:20.11ID:AJ/62bd2
android用にコンパイルしたら変わると思ったけどダメだね。
2016/02/10(水) 14:34:11.58ID:MWnoFMqP
Lazarusでandroidの簡単なプログラムを作成しています。
動作を遅くするための遅延をかけたいのですが、Windowsにコンパイルすると正常に動くものの、androidではウエイトタイマーが働きません。
サンプルをネットから持ってきて試しましたが、全部動きませんでした。
簡単でいいので教えてください。
2016/02/11(木) 10:24:59.82ID:mrMs7bvP
>>590
sleep でだめなの?
2016/02/11(木) 12:33:39.96ID:YrAhwDVz
ダメだった。delayもダメ。
mmsystemも使えないし。
タイマーコンポーネントなしで書きたいんだけど、うまくいかない。
2016/02/11(木) 18:10:17.22ID:RtkuQ1aq
はまり込んだけど何とか遅延タイマーできた。
2016/02/17(水) 12:13:38.47ID:YWa48D4x
うちではsleepで無問題だが。
unit単位で関数が重複してんじゃね?
2016/02/20(土) 14:06:46.13ID:SSwzx6vZ
androidアプリで教えてください。
マルチタッチはできますか。あるボタンを押しながら、別のボタンを押す処理をしたいのです。

それからもう一つ、アプリ終了の処理でcloseやterminateでは終了できませんでした。できる方法がありましたら教えてください。
2016/02/21(日) 21:40:45.15ID:3hIUa4lO
数枚の画像を埋め込んでパラパラ変えるようなプログラムを考えています。
JPG画像の埋め込み方を教えて下さい。
2016/02/22(月) 09:15:50.74ID:s0/IzlKL
色々なやり方が考えられるが $R でリソースに取り込んで
LoadFro,Resourceとかで読み込むというのが簡単じゃね。
基本は同じだからDelphiの超初心者スレで聞いてみれ。
2016/02/22(月) 12:55:01.70ID:k3buX2lD
>>597
ありがとう。
lrsエクスプローラで1つにまとめてできた。
delphiと微妙に違っていて苦労した。
2016/02/25(木) 04:57:55.42ID:7sNDanuc
おいおいおいおい、いつの間にか1.6出てるじゃんよ。
書き込んでくれないから、気付くの遅れたよ。
2016/02/27(土) 20:07:48.97ID:3JVa16cC
最近インストールしたばかりだが
よく出来てるねこれ
2016/02/29(月) 22:38:02.78ID:kP0lL60S
Laz 1.6.0 + FPC 3.3.0 を Windows にインストールしました。
FPC3 ではこれが通るのかと思っていたら動作しませんね。

var
s: UTF8String;
begin
s := '123あいうえお456';
ShowMessage(Copy(s, 5, 3));
end;


従来の
uses LazUTF8

ShowMessage(UTF8Copy(s, 5, 3));
は使えるけど。
2016/03/01(火) 08:16:01.11ID:DN1WpGc2
Copy、Insert、Delete、Lengthなどの伝統的関数(手続)が
要素単位(ANSIやUTF8ではバイト単位、UTF16ではワード単位)を
基準にするというのは永久不滅かと。
603601
垢版 |
2016/03/02(水) 21:07:51.79ID:sexlA1qQ
それはどうですかね。
引数に文字列リテラルか定数を渡せば期待する動作をしますが変数では駄目なのです。
2016/03/02(水) 21:45:17.29ID:iifCqHnV
「通る」「動作しません」「使える」「期待する動作」「駄目」などの
曖昧な言葉が多くてよくわからんな。
少し整理して機械翻訳でもいいから英語にして本家のフォーラム
で質問すると中の人が返事をくれると思うよ。
2016/03/03(木) 01:14:14.44ID:j+gb/hiZ
コンパイルのタイミングで、リテラルはAnsiStringとして評価、文字列定数はおそらく最適化によりAnsiStringにでもなったんじゃないの、なんとなくだけど。
2016/03/03(木) 01:19:05.87ID:j+gb/hiZ
文字列定数、

const AAA = 'foo';

としてれば、最適化うんぬん関係なく、AnsiStringとして評価されそう。

一方、

const BBB: string = 'bar';

だと、変数と同じ結果になりそう。
(今手元に環境ないから試せない)
2016/03/03(木) 10:25:00.04ID:wPT/TcQN
型なし文字列定数のコードページはCP_NONE?
2016/03/11(金) 18:06:14.35ID:kd7a12nS
Lamw: Lazarus Android Module Wizard
ttps://github.com/jmpessoa/lazandroidmodulewizard

既に使ってみた人いますか?
2016/03/14(月) 10:19:13.12ID:h2+VI+P2
>>601
改めて試したけど、そもそもうちでは

var
s: UTF8String;
begin
s := '123あいうえお456';
ShowMessage(s);
end;

で「あいうえお」部分が文字化けする。
s: string;
にすると文字化けしない。
ShowMessageがUTF8Stringに対応してないんじゃあるまいか。
2016/03/14(月) 10:21:34.75ID:h2+VI+P2
>>607
ShowMessage(IntToStr(StringCodePage('あいうえお')));
で0と表示されるからCP_NONEみたいだ。
2016/03/14(月) 18:06:18.97ID:h2+VI+P2
>>609
自己レス。ShowMessageの問題ではないみたい。
2016/03/14(月) 18:19:06.24ID:h2+VI+P2
>>610
こっちも自己レス。汚してすみません。
0は、CP_NONEでなくCP_ACPだた。
2016/03/31(木) 09:15:03.95ID:DT+Zx2Kz
>>601
UTF8String を使う場合は、ソースの先頭部付近に
{$codepage UTF8}
を加えるのがほぼ必須みたいです。
そして、copyはやはりコードページを意識しない
(要素単位固定、現在は1要素=1バイト)みたいです。
ですので s: string; とした場合と動作は変わらないみたいです。
2016/04/10(日) 18:47:56.27ID:+pxFkfgJ
どうして不人気なんだろう
2016/04/10(日) 19:28:01.82ID:AbYPTdqD
いや、そもそも Pascal が
2016/04/11(月) 08:09:18.63ID:k7zVs+aP
Delphiがああなっちゃったからな
2016/04/11(月) 14:01:09.14ID:vm/+Ir/o
自分は Pascal 好きなんだけどね。
でも遊びくらいにしか使えないわなあ。
余計な苦労するだけだし。
2016/04/11(月) 18:04:07.15ID:byY4yMu5
>>617
どういう苦労なの。
俺はVBなら出来るんだけどという奴に合うたびに閉口するんだけど。
参考に教えてちょうだい。
2016/04/11(月) 23:08:16.24ID:vm/+Ir/o
>>618
ああ、ここ Linux の板じゃなかったな。
たいていサンプルがあるのって C じゃん?無理やり Pascal に書きなおすか、
なんとかしてドッキングさせたりとかそういうところ。
Windows は、最近はネイティブアプリを作ることがないな。
.NET 使うなら言語の違いは大して意味ないし。
2016/04/12(火) 07:42:12.61ID:Xft6WNxx
たいした苦労してねぇじゃんw
2016/04/12(火) 19:58:26.51ID:7vlrxoJS
そ、そうだな
(誰も苦労話なんかしてないんだが……)
2016/04/13(水) 08:12:25.93ID:phkpqyMN
俺は逆にCをPascalに移植するの好きだけどな。
変にマニュアルとか読むよりも仕様がよくわかるし
何よりもPascalの便利さがわかる。
2016/04/13(水) 08:39:28.24ID:nekRTpPK
でも1万行とか、移植しかねるけどなぁ。
2016/04/14(木) 08:09:53.69ID:PaNxRcDi
それはケースバイケースで、CでDLLを作るという手もあるよ。
いずれにせよCでできることはObjectPascalでもほぼできるわけで
慣れれば困るということはないよ。
僕の経験上で今までObjectPascalでできなかったのは
デバイスドライバ開発時のメモリアドレスの絶対指定ぐらいかな。
2016/04/14(木) 10:14:23.22ID:J0RiNZuZ
Delphi3でデバイスドライバーを作ってる人見たが
VCと混合だったかな
うろおぼえ
2016/04/23(土) 22:03:11.97ID:xOcN8gUA
ツールのDelphi Conversionで簡単なDelphiプロジェクトをLazarusに変換したんだけど
コンパイルしようとすると「プロジェクトにメインソースファイルがありません」って出ちゃう
どこをいじったらいいでしょう?
2016/04/24(日) 10:19:11.75ID:HIJpSTnw
変換前のDelphiプロジェクトはこれです
http://fast-uploader.com/file/7016973507576/
2016/04/27(水) 10:18:46.99ID:xY/IN+83
>>626
試したけどそのようなエラーは出なかったよ
2016/04/28(木) 18:14:24.74ID:5KpvszkH
>>626
コンバートで失敗はなかったけど、コンパイルする時に4つエラーが出た
lazarusにはない記述だから仕方ないけど
2016/04/29(金) 16:31:19.76ID:wdLdMMLy
>>628
>>629
レスありがとうございます
もう一度試してだめなら
手作業で変換することにします
2016/05/08(日) 13:18:08.88ID:hQ0WJbMm
Shift_JIS漢字を含む文字列をUTF-8文字列に変換したいのですが
AnsiToUtf8関数は見当違いですか?
試してみましたがうまくいきませんでした
2016/05/08(日) 15:01:22.75ID:pwQcqOb7
そりゃANSIだからな
2016/05/08(日) 15:21:32.70ID:i4zyqzbf
OSがWindowsなら見当違いじゃないよ
2016/05/08(日) 18:47:19.53ID:hQ0WJbMm
>>632
>>633
OSはWindows7 64Bitです
うまくいかないのは何かコンパイラ指示とか足りないのでしょうか
他にShift_JISからUTF-8に変換できる関数とかないでしょうか
2016/05/08(日) 19:23:38.54ID:pwQcqOb7
WindowsならAPIがあるよ
2016/05/08(日) 22:14:02.22ID:HqJeT4yF
15年ぶりぐらいでプログラミングを
Lazarus で復帰し、半年ほど前からさわってるけどこうやって変換してるよ。Ver1.6

ただしLConvertEncode Unitの半角カナの扱いにバグがありConverterEncode() で半角カナが消える。
全角とANSIなら問題ない。

LConvertEncodeのasiancodepagefunctions.inc のDBCSToUTF8() のソースコードを少し修正すればOk。



uses
LazUTF8Classes,LazUTF8,.....,LConvEncording;

中略

SL:=TStringList.Create;
try
LoadStringsFromFileUTF8(SL, filename);
for i := 0 to SL.Count - 1 do begin
if GuessEncoding(SL[i]) = 'cp932' then
Memo.Lines.Add(ConvertEncoding(SL[i], 'cp932', 'utf8')) // SJIS to UTF8コード変換
else
Memo.Lines.Add(SL[i]);
end;
finally
FreeAndNil(SL);
end;
2016/05/08(日) 22:55:56.40ID:HqJeT4yF
>>636

C:\lazarus\components\lazutils\lconvencoding.pasのConvertEncoding(SL[i], 'cp932', 'utf8')で半角カナ が消える件
asiancodepagefunctions.inc の下記ルーチンがCP932 SJISの半角カナを正しくハンドリングできていない

function DBCSToUTF8(const s: string; CodeP: integer): string;
:
:
repeat
c := Src^;
Inc(Src);
if Ord(c) < 128 then begin
if (c=#0) and (Src-PChar(s)>=len) then break;
Dest^ := c;
Inc(Dest);
end
else begin
code := Byte(c) shl 8; <---- Ord(c) > $80 の時は無条件に2Byte文字にしているのがNG
c:=Src^;
if (c=#0) and (Src-PChar(s)>=len) then break;
code := code + Byte(c);
Inc(Src);
2016/05/08(日) 23:00:44.78ID:HqJeT4yF
>>636 以下 修正したコードだけど、参考まで。
function DBCSToUTF8(const s: string; CodeP: integer): string;
:
const // 半角カナ 対応
HankakuKanaUTF8Code:array[$A1..$DF] of array[1..3] of Byte
=(($EF,$BD,$A1),($EF,$BD,$A2),($EF,$BD,$A3),($EF,$BD,$A4),($EF,$BD,$A5),($EF,$BD,$A6),($EF,$BD,$A7),($EF,$BD,$A8),
($EF,$BD,$A9),($EF,$BD,$AA),($EF,$BD,$AB),($EF,$BD,$AC),($EF,$BD,$AD),($EF,$BD,$AE),($EF,$BD,$AF),($EF,$BD,$B0),
($EF,$BD,$B1),($EF,$BD,$B2),($EF,$BD,$B3),($EF,$BD,$B4),($EF,$BD,$B5),($EF,$BD,$B6),($EF,$BD,$B7),($EF,$BD,$B8),
($EF,$BD,$B9),($EF,$BD,$BA),($EF,$BD,$BB),($EF,$BD,$BC),($EF,$BD,$BD),($EF,$BD,$BE),($EF,$BD,$BF),($EF,$BE,$80),
($EF,$BE,$81),($EF,$BE,$82),($EF,$BE,$83),($EF,$BE,$84),($EF,$BE,$85),($EF,$BE,$86),($EF,$BE,$87),($EF,$BE,$88),
($EF,$BE,$89),($EF,$BE,$8A),($EF,$BE,$8B),($EF,$BE,$8C),($EF,$BE,$8D),($EF,$BE,$8E),($EF,$BE,$8F),($EF,$BE,$90),
($EF,$BE,$91),($EF,$BE,$92),($EF,$BE,$93),($EF,$BE,$94),($EF,$BE,$95),($EF,$BE,$96),($EF,$BE,$97),($EF,$BE,$98),
($EF,$BE,$99),($EF,$BE,$9A),($EF,$BE,$9B),($EF,$BE,$9C),($EF,$BE,$9D),($EF,$BE,$9E),($EF,$BE,$9F));
// ここまで
begin
:
repeat
:
begin
if (c=#0) and (Src-PChar(s)>=len) then break;
Dest^ := c;
Inc(Dest);
end
else if (CodeP = 932) and (Ord(c) >= $A1) and (Ord(c) <= $DF) then begin // 半角カナ 対応
Dest^ := Char(HankakuKanaUTF8Code[Ord(c)][1]);
Inc(Dest);
Dest^ := Char(HankakuKanaUTF8Code[Ord(c)][2]);
Inc(Dest);
Dest^ := Char(HankakuKanaUTF8Code[Ord(c)][3]);
Inc(Dest);
end // ここまで
2016/05/09(月) 20:03:45.11ID:df1MgNYQ
>>635
ありがとうございます
APIを探してみます
>>636
>>637
>>638
サンプルコードまで書いてくれてすみません
早速試してみます
2016/05/09(月) 21:59:01.22ID:df1MgNYQ
>>636
コードページを使うってことがまったく頭にありませんでした
DelphiならAnsiToUtf8ExとかUtf8ToAnsiExあたりが使えそうですがLazarusにはなさそうで…
>>635
Win32APIを探してみたらMultiByteToWideCharというのが使えそうですね
コードページはCP_OEMCPあたりでしょうか

WideCharからUTF-8はWideStringにしてStringに代入で変換できそうですね
このあたりを使ってコードを書いて見ます
2016/05/10(火) 08:00:47.53ID:EV5/gRyu
>>640
素直に SetStringCodePage を使えば?
2016/05/10(火) 08:19:54.24ID:EV5/gRyu
>>640
あと1.6以降でのUTF16、UTF8の自動相互変換は思わぬところで嵌まることがあるので
1.4以前みたくUtf8EncodeやUtf8Decodeを噛ませておいたほうがいいよ
2016/05/10(火) 17:28:34.34ID:juYdG8tQ
>>640
636だけど良い方法分かったらレポよろしく。
10数年前にDelphi 7を使ったのが最後だったんでLazarusで半角カナ混じりのSJISテキストファイル表示するのに試行錯誤したよ。
知らなかっただけかもしれないが当時はUnix がEUC主流でUTFなんて無かったような。
2016/05/10(火) 19:02:26.62ID:CkL9FHEL
delphi7は、一応utf-8に変換する関数は用意されてるね。
基本面のみなので、サロゲートペアを適切に扱ってはくれないけど。
645640
垢版 |
2016/05/10(火) 22:51:51.91ID:ZbVjwRdt
一応こんな感じで今のところうまくいっています

1.uses節にWindowsを追加

2.varはこんな感じ
var
 SJStr, U8Str: String;
 WStr: WideString;
 Wlen: Integer;

3.ShiftJIStoUTF8内
 WLen:=MultiByteToWideChar(CP_OEMCP,MB_PRECOMPOSED,PChar(SJStr),
      Length(SJStr),PWideChar(WStr),0);
 SetLength(WStr,WLen);
 MultiByteToWideChar(CP_OEMCP,MB_PRECOMPOSED,PChar(SJStr),
      Length(SJStr),PWideChar(WStr),WLen);
U8Str:=String(WStr);
//半角Spaceを全角Space ni置き換えています


SJStrはShift_JIS String
U8StrはUTF-8 String
APIを2回Callしているのは1回目で変換後のサイズを取得して2回目で実際に変換しているからです

API出力のUTF-16をPWideChar(array of WideChar)とかで受けて
String(PWideChar(…とかするとうまく変換してくれませんでした
(コンパイルは通るけど)
String(WideString(PWideChar(…なら変換してくれました
なので最初からAPIの出力はWideStringで受けています

しばらくこんな感じで使ってみて不具合が出たらまた考えて見ます
皆さんいろいろな助言をありがとうございました
646640
垢版 |
2016/05/10(火) 23:19:26.73ID:ZbVjwRdt
テスト用のProjectです
http://yahoo.jp/box/Vl_y-O
647640
垢版 |
2016/05/10(火) 23:41:44.72ID:ZbVjwRdt
ファイルが壊れていたので再UPしました
http://yahoo.jp/box/wFfctM
2016/05/11(水) 08:48:13.55ID:dFlNvgk/
難しく考え過ぎじゃない?
LazUTF8 か SetCodePage じゃだめなの?

procedure TForm1.Button1Click(Sender: TObject);
var
s, s1, s2: string;
sl: tstringlist;
begin
s:= 'ABCDEFGあいうえおアイウエオ';

s1:= UTF8ToWinCP(s);
Label1.Caption:= LazUTF8.WinCPToUTF8(s1);

s2:= s;
SetCodePage(RawByteString(s2), 932{SJIS}, true);
Label2.Caption:= LazUTF8.WinCPToUTF8(s2);
end;
2016/05/11(水) 22:06:49.06ID:44k2tpxg
>>648
LazUTF8というのがまったくの初耳でした
WinCPToUTF8であっさりできてしまうんですね
ありがとうございます
2016/05/25(水) 00:13:49.87ID:QLrAFpkQ
>>648
slは?
2016/05/25(水) 08:41:27.50ID:ZPEsWqSz
>>650
テストでテキストファイルに書き出してたのだが
その名残り。削除し忘れた
2016/05/26(木) 00:50:04.87ID:ud38oY6v
>>651
なるほど了解
2016/05/28(土) 11:29:41.05ID:1CNQzrIS
SysUtilsのFileCreate,FileOpen,FileRead,FileWriteは使わないほうがいいですか?
Byteの動的配列をSetlengthしてFileReadに食わせたらFileReadはエラーが出ないけれど
それ以降の動的配列のアクセスすべてで例外が発生します。
2016/05/28(土) 15:04:50.57ID:bhUf6De/
>>653
こういう質問のときはエラーになるコードも書いてよ
まぁ状況から察するには
×FileRead(FileHandle, a, Count)
○FileRead(FileHandle, a[0], Count)
2016/05/28(土) 15:41:31.05ID:1CNQzrIS
>>654
すみませんでした。
まさにお察しのとおりでしたありがとうございます。
2016/05/29(日) 22:53:35.12ID:CgTmLBtG
自分で使う用にリネームツールを作ってたんだけど
もしかしてFileExistsとかRenameFileって2バイトコード対応してないのですかね?
657656
垢版 |
2016/05/29(日) 23:05:42.58ID:CgTmLBtG
「Lazarusのだと」ってことね
念の為w
2016/05/30(月) 10:19:18.03ID:CyoOVxjo
質問するならせめて用語くらいは正しく使おうよ。
2バイトコードがSJISのことだと仮定すると
(なぜならUTF8の日本語は3バイトなので)
Lazの文字コ−ドは標準がUTF8なのでUTF8-SJIS変換をかませる必要がある。
なお、Laz v1.6以降のFileExistsやRenameFileはUTF8にフル対応してる。
Laz v1.4以前は FileExistsUTF8 などを使う必要がある。
2016/05/30(月) 20:27:03.00ID:8YY6SnwS
>>658
勉強になりました
ありがとうございます
2016/06/10(金) 17:51:09.92ID:l84CA5RZ
これってdelphiで作ったプロジェクトをコンパイルできますか?
2016/06/10(金) 20:01:04.17ID:sPlWs0BN
コンバートできるものとできないものがある。
さすがに修正することが多いですね。
2016/06/10(金) 23:04:41.83ID:l84CA5RZ
>>661
ありがとう
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況