(クロス)オープンソースコンパイラ 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
探検
【Delphi互換!?】FreePascal/Lazarus その2【GPL】
2009/12/25(金) 02:46:18
619デフォルトの名無しさん
2016/04/11(月) 23:08:16.24ID:vm/+Ir/o >>618
ああ、ここ Linux の板じゃなかったな。
たいていサンプルがあるのって C じゃん?無理やり Pascal に書きなおすか、
なんとかしてドッキングさせたりとかそういうところ。
Windows は、最近はネイティブアプリを作ることがないな。
.NET 使うなら言語の違いは大して意味ないし。
ああ、ここ Linux の板じゃなかったな。
たいていサンプルがあるのって C じゃん?無理やり Pascal に書きなおすか、
なんとかしてドッキングさせたりとかそういうところ。
Windows は、最近はネイティブアプリを作ることがないな。
.NET 使うなら言語の違いは大して意味ないし。
620デフォルトの名無しさん
2016/04/12(火) 07:42:12.61ID:Xft6WNxx たいした苦労してねぇじゃんw
621デフォルトの名無しさん
2016/04/12(火) 19:58:26.51ID:7vlrxoJS そ、そうだな
(誰も苦労話なんかしてないんだが……)
(誰も苦労話なんかしてないんだが……)
622デフォルトの名無しさん
2016/04/13(水) 08:12:25.93ID:phkpqyMN 俺は逆にCをPascalに移植するの好きだけどな。
変にマニュアルとか読むよりも仕様がよくわかるし
何よりもPascalの便利さがわかる。
変にマニュアルとか読むよりも仕様がよくわかるし
何よりもPascalの便利さがわかる。
623デフォルトの名無しさん
2016/04/13(水) 08:39:28.24ID:nekRTpPK でも1万行とか、移植しかねるけどなぁ。
624デフォルトの名無しさん
2016/04/14(木) 08:09:53.69ID:PaNxRcDi それはケースバイケースで、CでDLLを作るという手もあるよ。
いずれにせよCでできることはObjectPascalでもほぼできるわけで
慣れれば困るということはないよ。
僕の経験上で今までObjectPascalでできなかったのは
デバイスドライバ開発時のメモリアドレスの絶対指定ぐらいかな。
いずれにせよCでできることはObjectPascalでもほぼできるわけで
慣れれば困るということはないよ。
僕の経験上で今までObjectPascalでできなかったのは
デバイスドライバ開発時のメモリアドレスの絶対指定ぐらいかな。
625デフォルトの名無しさん
2016/04/14(木) 10:14:23.22ID:J0RiNZuZ Delphi3でデバイスドライバーを作ってる人見たが
VCと混合だったかな
うろおぼえ
VCと混合だったかな
うろおぼえ
626デフォルトの名無しさん
2016/04/23(土) 22:03:11.97ID:xOcN8gUA ツールのDelphi Conversionで簡単なDelphiプロジェクトをLazarusに変換したんだけど
コンパイルしようとすると「プロジェクトにメインソースファイルがありません」って出ちゃう
どこをいじったらいいでしょう?
コンパイルしようとすると「プロジェクトにメインソースファイルがありません」って出ちゃう
どこをいじったらいいでしょう?
627デフォルトの名無しさん
2016/04/24(日) 10:19:11.75ID:HIJpSTnw 変換前のDelphiプロジェクトはこれです
http://fast-uploader.com/file/7016973507576/
http://fast-uploader.com/file/7016973507576/
628デフォルトの名無しさん
2016/04/27(水) 10:18:46.99ID:xY/IN+83 >>626
試したけどそのようなエラーは出なかったよ
試したけどそのようなエラーは出なかったよ
629デフォルトの名無しさん
2016/04/28(木) 18:14:24.74ID:5KpvszkH630デフォルトの名無しさん
2016/04/29(金) 16:31:19.76ID:wdLdMMLy631デフォルトの名無しさん
2016/05/08(日) 13:18:08.88ID:hQ0WJbMm Shift_JIS漢字を含む文字列をUTF-8文字列に変換したいのですが
AnsiToUtf8関数は見当違いですか?
試してみましたがうまくいきませんでした
AnsiToUtf8関数は見当違いですか?
試してみましたがうまくいきませんでした
632デフォルトの名無しさん
2016/05/08(日) 15:01:22.75ID:pwQcqOb7 そりゃANSIだからな
633デフォルトの名無しさん
2016/05/08(日) 15:21:32.70ID:i4zyqzbf OSがWindowsなら見当違いじゃないよ
634デフォルトの名無しさん
2016/05/08(日) 18:47:19.53ID:hQ0WJbMm635デフォルトの名無しさん
2016/05/08(日) 19:23:38.54ID:pwQcqOb7 WindowsならAPIがあるよ
636デフォルトの名無しさん
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;
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;
637デフォルトの名無しさん
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);
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);
638デフォルトの名無しさん
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 // ここまで
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 // ここまで
639デフォルトの名無しさん
2016/05/09(月) 20:03:45.11ID:df1MgNYQ640デフォルトの名無しさん
2016/05/09(月) 21:59:01.22ID:df1MgNYQ641デフォルトの名無しさん
2016/05/10(火) 08:00:47.53ID:EV5/gRyu >>640
素直に SetStringCodePage を使えば?
素直に SetStringCodePage を使えば?
642デフォルトの名無しさん
2016/05/10(火) 08:19:54.24ID:EV5/gRyu643デフォルトの名無しさん
2016/05/10(火) 17:28:34.34ID:juYdG8tQ >>640
636だけど良い方法分かったらレポよろしく。
10数年前にDelphi 7を使ったのが最後だったんでLazarusで半角カナ混じりのSJISテキストファイル表示するのに試行錯誤したよ。
知らなかっただけかもしれないが当時はUnix がEUC主流でUTFなんて無かったような。
636だけど良い方法分かったらレポよろしく。
10数年前にDelphi 7を使ったのが最後だったんでLazarusで半角カナ混じりのSJISテキストファイル表示するのに試行錯誤したよ。
知らなかっただけかもしれないが当時はUnix がEUC主流でUTFなんて無かったような。
644デフォルトの名無しさん
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で受けています
しばらくこんな感じで使ってみて不具合が出たらまた考えて見ます
皆さんいろいろな助言をありがとうございました
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
http://yahoo.jp/box/Vl_y-O
647640
2016/05/10(火) 23:41:44.72ID:ZbVjwRdt ファイルが壊れていたので再UPしました
http://yahoo.jp/box/wFfctM
http://yahoo.jp/box/wFfctM
648デフォルトの名無しさん
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;
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;
649デフォルトの名無しさん
2016/05/11(水) 22:06:49.06ID:44k2tpxg650デフォルトの名無しさん
2016/05/25(水) 00:13:49.87ID:QLrAFpkQ >>648
slは?
slは?
651デフォルトの名無しさん
2016/05/25(水) 08:41:27.50ID:ZPEsWqSz652デフォルトの名無しさん
2016/05/26(木) 00:50:04.87ID:ud38oY6v >>651
なるほど了解
なるほど了解
653デフォルトの名無しさん
2016/05/28(土) 11:29:41.05ID:1CNQzrIS SysUtilsのFileCreate,FileOpen,FileRead,FileWriteは使わないほうがいいですか?
Byteの動的配列をSetlengthしてFileReadに食わせたらFileReadはエラーが出ないけれど
それ以降の動的配列のアクセスすべてで例外が発生します。
Byteの動的配列をSetlengthしてFileReadに食わせたらFileReadはエラーが出ないけれど
それ以降の動的配列のアクセスすべてで例外が発生します。
654デフォルトの名無しさん
2016/05/28(土) 15:04:50.57ID:bhUf6De/ >>653
こういう質問のときはエラーになるコードも書いてよ
まぁ状況から察するには
×FileRead(FileHandle, a, Count)
○FileRead(FileHandle, a[0], Count)
こういう質問のときはエラーになるコードも書いてよ
まぁ状況から察するには
×FileRead(FileHandle, a, Count)
○FileRead(FileHandle, a[0], Count)
655デフォルトの名無しさん
2016/05/28(土) 15:41:31.05ID:1CNQzrIS656デフォルトの名無しさん
2016/05/29(日) 22:53:35.12ID:CgTmLBtG 自分で使う用にリネームツールを作ってたんだけど
もしかしてFileExistsとかRenameFileって2バイトコード対応してないのですかね?
もしかしてFileExistsとかRenameFileって2バイトコード対応してないのですかね?
657656
2016/05/29(日) 23:05:42.58ID:CgTmLBtG 「Lazarusのだと」ってことね
念の為w
念の為w
658デフォルトの名無しさん
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 などを使う必要がある。
2バイトコードがSJISのことだと仮定すると
(なぜならUTF8の日本語は3バイトなので)
Lazの文字コ−ドは標準がUTF8なのでUTF8-SJIS変換をかませる必要がある。
なお、Laz v1.6以降のFileExistsやRenameFileはUTF8にフル対応してる。
Laz v1.4以前は FileExistsUTF8 などを使う必要がある。
659デフォルトの名無しさん
2016/05/30(月) 20:27:03.00ID:8YY6SnwS660デフォルトの名無しさん
2016/06/10(金) 17:51:09.92ID:l84CA5RZ これってdelphiで作ったプロジェクトをコンパイルできますか?
661デフォルトの名無しさん
2016/06/10(金) 20:01:04.17ID:sPlWs0BN コンバートできるものとできないものがある。
さすがに修正することが多いですね。
さすがに修正することが多いですね。
662デフォルトの名無しさん
2016/06/10(金) 23:04:41.83ID:l84CA5RZ >>661
ありがとう
ありがとう
663デフォルトの名無しさん
2016/06/16(木) 00:49:42.07ID:CZxzTwBY Ubuntu on Windowsでもlazarus動くようになったな
664デフォルトの名無しさん
2016/06/23(木) 10:23:35.15ID:+E1fa5qm >>663
Ubuntu on Windowsってbashがうごくだけじゃないの?
Ubuntu on Windowsってbashがうごくだけじゃないの?
665デフォルトの名無しさん
2016/06/24(金) 07:34:54.32ID:CuRtWnlL ubuntu環境そのものが動くんやで
666デフォルトの名無しさん
2016/06/24(金) 11:06:27.44ID:1hPX2Gux 666
667デフォルトの名無しさん
2016/07/02(土) 09:01:37.43ID:rae11cGA WideStringではまってしまった
procedure TForm1.Button8Click(Sender: TObject);
var
str: string;
wstr: widestring;
begin
str:='stringテスト';
wstr:=widestring('stringテスト');
Label22.Caption:=IntToStr(Length(widestring(str))); //9と表示された
Label23.Caption:=IntToStr(Length(widestring(wstr))); //15と表示された
end;
label23は9と表示されてほしかったのに…
procedure TForm1.Button8Click(Sender: TObject);
var
str: string;
wstr: widestring;
begin
str:='stringテスト';
wstr:=widestring('stringテスト');
Label22.Caption:=IntToStr(Length(widestring(str))); //9と表示された
Label23.Caption:=IntToStr(Length(widestring(wstr))); //15と表示された
end;
label23は9と表示されてほしかったのに…
668デフォルトの名無しさん
2016/07/02(土) 13:16:40.19ID:PNWyJIIt widecharですらないな
669デフォルトの名無しさん
2016/07/02(土) 14:12:28.25ID:RQTJ1Rgb 予想通りの答えだと思うけど
StringをWideStringでキャストしている意図がわからない
StringをWideStringでキャストしている意図がわからない
670デフォルトの名無しさん
2016/07/02(土) 16:23:02.94ID:rae11cGA >StringをWideStringでキャストしている意図がわからない
バイト数でなく文字数を出すため
Delphi 6で試してみたところ
Length(widestring(str))
Length(widestring(wstr))
は両方とも9になった
Length('stringテスト')=12
Length(widestring('stringテスト'))=9
だった
バイト数でなく文字数を出すため
Delphi 6で試してみたところ
Length(widestring(str))
Length(widestring(wstr))
は両方とも9になった
Length('stringテスト')=12
Length(widestring('stringテスト'))=9
だった
671デフォルトの名無しさん
2016/07/02(土) 20:14:25.02ID:I09L8Xiz WideString型の値をWideStringにキャストしたら文字数が9 -> 15になったって話か。
裏で走る組み込みの型変換の関数で変換元と先が同じ型かどうかのチェックをサボってるとかかな?
裏で走る組み込みの型変換の関数で変換元と先が同じ型かどうかのチェックをサボってるとかかな?
672デフォルトの名無しさん
2016/07/03(日) 10:24:08.28ID:0+vEtgzf str:='stringテスト';
wstr1:='stringテスト'; //15
wstr2:=widestring('stringテスト'); //15
wstr3:=widestring(str); //9
wstr4:=widestring(wstr3); //9
だったから、リテラル→widestring が期待する動作じゃないな
const
str: string = 'stringテスト';
wstr: widestring = widestring(str);
をやってみたら、
ユニコードをAnsiStringにすることはコンパイル時にはできません
なぜなら実行時の文字コードを知らないからです
みたいなエラーが出た
widestringはansistringと同じ扱いなのか?
wstr1:='stringテスト'; //15
wstr2:=widestring('stringテスト'); //15
wstr3:=widestring(str); //9
wstr4:=widestring(wstr3); //9
だったから、リテラル→widestring が期待する動作じゃないな
const
str: string = 'stringテスト';
wstr: widestring = widestring(str);
をやってみたら、
ユニコードをAnsiStringにすることはコンパイル時にはできません
なぜなら実行時の文字コードを知らないからです
みたいなエラーが出た
widestringはansistringと同じ扱いなのか?
673デフォルトの名無しさん
2016/07/03(日) 11:25:02.28ID:qCpRmwfF 文字列系は1.6(FPC3.0)で大きく変わったので
まずはバージョンを書こうぜ
まずはバージョンを書こうぜ
674デフォルトの名無しさん
2016/07/03(日) 11:28:25.67ID:qCpRmwfF 多分1.6を使ってるとして返事するけど、
1.6でも、WideString(=UnicodeUtring=UTF16)と
String(=UTF8)を相互に代入するときは1.4以前と同じく
UTF8Decode()やUTF8Encode()を噛ませたほうがいいよ。
理由は詳しくは書かないけど。
1.6でも、WideString(=UnicodeUtring=UTF16)と
String(=UTF8)を相互に代入するときは1.4以前と同じく
UTF8Decode()やUTF8Encode()を噛ませたほうがいいよ。
理由は詳しくは書かないけど。
675デフォルトの名無しさん
2016/07/03(日) 12:50:48.37ID:CNMZpLOO バージョンは1.6です
いろいろ試してみたけれどやはりUTF8Decodeが確実でした
あとなぜかWidestring(PChar())のキャストも9になります
Label1.Caption:=InttoStr(Length(Widestring('stringテスト')));//15
Label2.Caption:=InttoStr(Length(Widestring(String('stringテスト'))));//15
Label3.Caption:=InttoStr(Length(Widestring(PChar('stringテスト'))));//9
Label4.Caption:=InttoStr(Length(Widestring(PWideChar('stringテスト'))));//15
Label5.Caption:=inttostr(length(UTF8Decode('stringテスト')));//9
いろいろ試してみたけれどやはりUTF8Decodeが確実でした
あとなぜかWidestring(PChar())のキャストも9になります
Label1.Caption:=InttoStr(Length(Widestring('stringテスト')));//15
Label2.Caption:=InttoStr(Length(Widestring(String('stringテスト'))));//15
Label3.Caption:=InttoStr(Length(Widestring(PChar('stringテスト'))));//9
Label4.Caption:=InttoStr(Length(Widestring(PWideChar('stringテスト'))));//15
Label5.Caption:=inttostr(length(UTF8Decode('stringテスト')));//9
676デフォルトの名無しさん
2016/07/03(日) 13:27:23.79ID:qCpRmwfF いずれにせよFPC3.0では
文字列のキャストはコードページ付き文字列の導入に伴って
よう分からんことになってるので
1.4以前のようにきちんと文字列型のコードページを把握しつつ
UTF8Decode UTF8Encode その他をきちんと使うのがおすすめ。
なお、UTF16のバイト長の取得は
i:=Length(UTF8Decode('あいうえお')) * 2;
でいいと思う。
文字列のキャストはコードページ付き文字列の導入に伴って
よう分からんことになってるので
1.4以前のようにきちんと文字列型のコードページを把握しつつ
UTF8Decode UTF8Encode その他をきちんと使うのがおすすめ。
なお、UTF16のバイト長の取得は
i:=Length(UTF8Decode('あいうえお')) * 2;
でいいと思う。
677デフォルトの名無しさん
2016/07/05(火) 13:06:24.30ID:C9UYDhUV 気になって、ちょっと古いけどUnicode対応のDelphi XE5で試してみた
おかしな結果にならない模様
ttps://gist.github.com/anonymous/8636175cf9340234cfa452f492b074ee
おかしな結果にならない模様
ttps://gist.github.com/anonymous/8636175cf9340234cfa452f492b074ee
678デフォルトの名無しさん
2016/07/06(水) 08:06:19.72ID:/9bisM4Q 文字列定数のコードページの初期値が違うので
違う結果になるのは当然。
文字列定数のコードページを同じにすれば同じ結果になるはず。
これ以上深入りしても無駄だと思うけど
違う結果になるのは当然。
文字列定数のコードページを同じにすれば同じ結果になるはず。
これ以上深入りしても無駄だと思うけど
679デフォルトの名無しさん
2016/08/25(木) 11:21:40.41ID:udEjBPPq 10年ぶりにDelphi 無償版リリース!
Delphi / C++Builder 10.1 Berlin Starter Edition が無料でダウンロード可能
注意事項
・無料ダウンロードは2016年8月22日から9月9日までの期間限定
・1回の登録/申請で1ライセンス入手可能
・1つのEメールアドレス/アカウントごとに1ライセンスのみ入手可
[Delphi 10.1 Berlin Starter Edition]
https://www.embarcadero.com/jp/products/delphi/starter/promotional-download
[C++Builder 10.1 Berlin Starter Edition]
https://www.embarcadero.com/jp/products/cbuilder/starter/promotional-download
Delphi / C++Builder 10.1 Berlin Starter Edition が無料でダウンロード可能
注意事項
・無料ダウンロードは2016年8月22日から9月9日までの期間限定
・1回の登録/申請で1ライセンス入手可能
・1つのEメールアドレス/アカウントごとに1ライセンスのみ入手可
[Delphi 10.1 Berlin Starter Edition]
https://www.embarcadero.com/jp/products/delphi/starter/promotional-download
[C++Builder 10.1 Berlin Starter Edition]
https://www.embarcadero.com/jp/products/cbuilder/starter/promotional-download
680デフォルトの名無しさん
2016/08/25(木) 11:24:24.64ID:2ugLHJjt GoodJob
681デフォルトの名無しさん
2016/08/25(木) 11:34:14.78ID:udEjBPPq >>679
全部入力したのに[今すぐダウンロード]を押してもダウンロードが開始しない場合は、
Japanを他の国(例えばJamaica)を選択して、またJapanに戻せば、
[今すぐダウンロード]を押せるようになるぞ!
全部入力したのに[今すぐダウンロード]を押してもダウンロードが開始しない場合は、
Japanを他の国(例えばJamaica)を選択して、またJapanに戻せば、
[今すぐダウンロード]を押せるようになるぞ!
682デフォルトの名無しさん
2016/08/25(木) 11:40:07.60ID:2ugLHJjt683デフォルトの名無しさん
2016/08/25(木) 14:00:20.22ID:udEjBPPq684デフォルトの名無しさん
2016/08/25(木) 14:42:11.47ID:9T4YP2MK 飛び込みでスマソ。Lazarusをダウンロードして使ってみたが、StringGridの最上部の固定行に漢字を入力すると漢字が縦書きで90度左に寝転んでしまう?
可動セルはフォントをメイリオで指定してうまくいった。 固定行のフォントがメイリオなどの横書き可のフォントが設定されていないためだと思うが、解決方法がわかる人教えてください
可動セルはフォントをメイリオで指定してうまくいった。 固定行のフォントがメイリオなどの横書き可のフォントが設定されていないためだと思うが、解決方法がわかる人教えてください
685デフォルトの名無しさん
2016/08/25(木) 21:59:44.84ID:3G9Zap9i >>679
gj
gj
686デフォルトの名無しさん
2016/08/26(金) 07:07:26.31ID:/D9L7gIq687デフォルトの名無しさん
2016/08/26(金) 12:01:12.58ID:WnsDsp7+ 両方落とせた
firefoxはだめだった
firefoxはだめだった
688デフォルトの名無しさん
2016/08/26(金) 12:07:43.72ID:hhb+kJJX ワシ、Firefoxで2つ落とした
689デフォルトの名無しさん
2016/08/26(金) 12:36:28.71ID:Og8WDrzm 両方一緒やろ?
儂は Iceweasel で落とした。
儂は Iceweasel で落とした。
690デフォルトの名無しさん
2016/08/27(土) 07:33:07.36ID:QNa4gh8r691デフォルトの名無しさん
2016/08/27(土) 07:55:16.20ID:QNa4gh8r どうしてもColumsで増やしたければオブジェクトインスペクタで該当するTgridcolumnをクリックして
Titleプロパティのフォントを変えていくしかない
Titleプロパティのフォントを変えていくしかない
692デフォルトの名無しさん
2016/08/27(土) 07:56:34.78ID:QNa4gh8r693デフォルトの名無しさん
2016/08/27(土) 10:04:00.85ID:scRVQuYc >>690
さんくす
StringGrid1
Colcount =5
FixedCols =0
FixedRows =1
Font = メイリオのレギュラー
でしているが、最上部の固定行だけは、漢字が縦書きで左90度で寝転んでしまう?
StringGridの2行目以降は漢字の横書きで正常です。
さんくす
StringGrid1
Colcount =5
FixedCols =0
FixedRows =1
Font = メイリオのレギュラー
でしているが、最上部の固定行だけは、漢字が縦書きで左90度で寝転んでしまう?
StringGridの2行目以降は漢字の横書きで正常です。
694デフォルトの名無しさん
2016/08/27(土) 10:04:53.20ID:scRVQuYc695デフォルトの名無しさん
2016/08/27(土) 11:19:34.00ID:QNa4gh8r >>693
TitleFontが@付になってるとか…
TitleFontが@付になってるとか…
696デフォルトの名無しさん
2016/08/27(土) 11:39:39.72ID:scRVQuYc >>695
私の環境では、@MS Pゴシックなどの@付きのフォントを設定すると「サンプル」フォントのプレビューでで漢字横書きになってしまいますし、
2行目以降可動セルの漢字も縦書きになってしまします。
いろいろフォントを変えて試したのですが、「メイリオ」「游ゴシック」「游明朝」が2行目以降の可動セルで漢字の横書きが可能かと思われます。
Lazarusは最新バージョンの1.6です。
また、1行目の固定セルと2行目以降の可動セルのフォントを別々に設定するとは、オブジェクトインスペクタでは出来ないように思います。
私の環境では、@MS Pゴシックなどの@付きのフォントを設定すると「サンプル」フォントのプレビューでで漢字横書きになってしまいますし、
2行目以降可動セルの漢字も縦書きになってしまします。
いろいろフォントを変えて試したのですが、「メイリオ」「游ゴシック」「游明朝」が2行目以降の可動セルで漢字の横書きが可能かと思われます。
Lazarusは最新バージョンの1.6です。
また、1行目の固定セルと2行目以降の可動セルのフォントを別々に設定するとは、オブジェクトインスペクタでは出来ないように思います。
697デフォルトの名無しさん
2016/08/27(土) 12:58:23.77ID:scRVQuYc 訂正
フォントのプレビューでで漢字横書き → フォントのプレビューでで漢字縦書き
フォントのプレビューでで漢字横書き → フォントのプレビューでで漢字縦書き
698デフォルトの名無しさん
2016/08/27(土) 21:37:04.16ID:QNa4gh8r699デフォルトの名無しさん
2016/08/27(土) 22:19:06.01ID:scRVQuYc >>698
StringGridのイベントは使ってないのですが、新規にStringGridを作ってみたら、最上部の固定行の横書きが成功しました。
Delphiで作っていたプログラムを移植しようしていたのですが、何かが悪さしているようです。
これが、うまくいっていない画像です。
http://s1.gazo.cc/up/207658.jpg
いろいろ有難うございます。解決の糸口が掴めそうです。
StringGridのイベントは使ってないのですが、新規にStringGridを作ってみたら、最上部の固定行の横書きが成功しました。
Delphiで作っていたプログラムを移植しようしていたのですが、何かが悪さしているようです。
これが、うまくいっていない画像です。
http://s1.gazo.cc/up/207658.jpg
いろいろ有難うございます。解決の糸口が掴めそうです。
700デフォルトの名無しさん
2016/08/27(土) 22:27:23.06ID:scRVQuYc701デフォルトの名無しさん
2016/08/28(日) 11:22:13.95ID:6leow/yK >>679
これ電話番号とか入れるの嫌なんだけど。
これ電話番号とか入れるの嫌なんだけど。
702デフォルトの名無しさん
2016/08/28(日) 14:33:51.11ID:ZU3e5ILB >>701
444 444 とかで大丈夫
444 444 とかで大丈夫
703デフォルトの名無しさん
2016/08/28(日) 18:05:48.47ID:6leow/yK704デフォルトの名無しさん
2016/08/29(月) 08:22:42.95ID:pGRksGF2 >>703
webインストーラーは共通
webインストーラーは共通
705デフォルトの名無しさん
2016/08/29(月) 12:56:21.31ID:24WsJT8K まだインストールしてないけど
インストールキーで機能が決まるんじゃないかな
インストールキーで機能が決まるんじゃないかな
706デフォルトの名無しさん
2016/08/29(月) 14:30:07.89ID:NKz4PvZo webインストーラーのくせにでかすぎなんだよ
707デフォルトの名無しさん
2016/08/29(月) 15:38:43.62ID:24WsJT8K http://echo.2ch.net/test/read.cgi/tech/1405783063/888
に実際インストールした人あり
に実際インストールした人あり
708デフォルトの名無しさん
2016/08/30(火) 08:40:18.90ID:GLkfzxek Windows.Beep(p1, p2);
これ使えないのか? どうして?
Buttonが今日は、真っ白の文字無しで表示? 昨日までは何ともなかったのに?
分かる方教えて?
これ使えないのか? どうして?
Buttonが今日は、真っ白の文字無しで表示? 昨日までは何ともなかったのに?
分かる方教えて?
709デフォルトの名無しさん
2016/08/30(火) 10:14:03.53ID:16/k2Vjy >708
何の話?
何の話?
710デフォルトの名無しさん
2016/08/30(火) 10:35:35.41ID:GLkfzxek >>709
Lazarus
Lazarus
711デフォルトの名無しさん
2016/08/30(火) 10:54:35.69ID:GLkfzxek ボタンは突然直った? よくわからん
712デフォルトの名無しさん
2016/09/01(木) 12:47:21.40ID:7WkVkVVj713デフォルトの名無しさん
2016/09/01(木) 17:34:08.80ID:/RLY/2xR またおま環かよ
714sage
2016/10/26(水) 16:16:30.40ID:DEpqtoKx こんちには
lazarusのwindows32bit版1.6を使っているのですが
1.codeeditorでマウスクリックすると
その位置までにスペースとかを補って文字入力カーソルを位置設定してまう機能をoffにしたい
2.タブで半角スペース4文字分インデントしたい(pascalは2文字分が伝統?)
3.行末でenterすると次の行が同じ数だけタブで補われて入力開始が出来る様にしたい
tool-option-editor
辺りにありそうな気がするのですが
適当にクリックして設定しても1.2.3.みたいに上手く設定出来ません
何処を設定すれば出来るのか教えてもらえませんでしょうか?
lazarusのwindows32bit版1.6を使っているのですが
1.codeeditorでマウスクリックすると
その位置までにスペースとかを補って文字入力カーソルを位置設定してまう機能をoffにしたい
2.タブで半角スペース4文字分インデントしたい(pascalは2文字分が伝統?)
3.行末でenterすると次の行が同じ数だけタブで補われて入力開始が出来る様にしたい
tool-option-editor
辺りにありそうな気がするのですが
適当にクリックして設定しても1.2.3.みたいに上手く設定出来ません
何処を設定すれば出来るのか教えてもらえませんでしょうか?
715デフォルトの名無しさん
2016/10/28(金) 09:14:54.09ID:nEGgz1cN 1.ツール→オプション→エディタ→一般→行末までスクロールをオフ
2.ツール→オプション→エディタ→一般→タブとインデント→タブ幅
3.は自動インデントの場合はタブにしたいの?
2.ツール→オプション→エディタ→一般→タブとインデント→タブ幅
3.は自動インデントの場合はタブにしたいの?
716デフォルトの名無しさん
2016/10/28(金) 10:04:32.48ID:ryzUF+6b 今月のTips
case 文字列型 of
文字列定数1: ほにゃらら;
文字列定数2: ほにゃらら;
文字列定数3: ほにゃらら;
end
が最新のLazarus(FPC3.0)でできるようになったって知ってた?
case 文字列型 of
文字列定数1: ほにゃらら;
文字列定数2: ほにゃらら;
文字列定数3: ほにゃらら;
end
が最新のLazarus(FPC3.0)でできるようになったって知ってた?
717デフォルトの名無しさん
2016/11/01(火) 17:54:12.82ID:KDUKmdhn >715さんどうもです
1.2.は言われた方法で上手くいきました
3.は715さんの言われた通りです
tab tab readln();
みたいに入力した後にenterを押した後
次の行が
tab tab 入力カーソル
みたいな状態にしたい
という事です
今はenter後の次の行が
space space space space space space space space 入力カーソル
みたいにスペースで補われてしまいます
新規行が常にタブで段落を構成するか
前の行に倣うようにしたい
という感じです
それとコンパイルエラーが出た時に表示されるmessagebox欄で
4.表示されるコンパイルエラー説明文字が切れて表示されてしまうのですが
これは環境によるみたいな感じなのでしょうか?
IDE自体は日本語設定に切り替えてフォントはMS 明朝にしているのでその辺りで上手くいって無いのでしょうか?
5.コンパイルエラー内容が切れて見えないので
エラー表示箇所にマウスカーソルを当ててツールチップでエラー内容を見るのですが
表示時間が短いので長くしたいのですが
何処かに設定が有りますか?
お願いします。
1.2.は言われた方法で上手くいきました
3.は715さんの言われた通りです
tab tab readln();
みたいに入力した後にenterを押した後
次の行が
tab tab 入力カーソル
みたいな状態にしたい
という事です
今はenter後の次の行が
space space space space space space space space 入力カーソル
みたいにスペースで補われてしまいます
新規行が常にタブで段落を構成するか
前の行に倣うようにしたい
という感じです
それとコンパイルエラーが出た時に表示されるmessagebox欄で
4.表示されるコンパイルエラー説明文字が切れて表示されてしまうのですが
これは環境によるみたいな感じなのでしょうか?
IDE自体は日本語設定に切り替えてフォントはMS 明朝にしているのでその辺りで上手くいって無いのでしょうか?
5.コンパイルエラー内容が切れて見えないので
エラー表示箇所にマウスカーソルを当ててツールチップでエラー内容を見るのですが
表示時間が短いので長くしたいのですが
何処かに設定が有りますか?
お願いします。
718デフォルトの名無しさん
2016/11/02(水) 11:27:06.42ID:1/V1NvWb IDEを日本語にする意味ってほとんどない気がする
レスを投稿する
ニュース
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★6 [樽悶★]
- 【🐼🇨🇳】「高市総理VS中国」で日本からパンダはゼロに? 上野動物園「パンダ返還期限」まであと4カ月…★2 [BFU★]
- 小野田紀美 経済安保相「悪いことをする外国人、日本にいない状況つくる」 [Hitzeschleier★]
- 【速報】 米大使声明 「日本を支えていく」「中国が威圧的手段に訴えるのは断ち難い悪癖」 [お断り★]
- 群馬知事、前橋市長から2度メールも「気づかなかった」 面会せず [どどん★]
- 【千葉市】ロッテ本拠地マリン ドーム型再検討 市の試算ではドーム化で400億円以上の追加投資が生じる可能性 [尺アジ★]
- 【実況】博衣こよりのえちえち声遊楽プロジェクト 共同研究第三弾🧪
- 【悲報】立憲岡田「間違った答弁をした高市総理に問題がある」→愛国者ブチギレ炎上 [834922174]
- 【速報】アメリカ「高市総理を支持する。中国の威圧は許せない」 [931948549]
- 小野田紀美大臣「悪いことをする外国人は日本にいない状況をつくる」 [856698234]
- 珍🏡珍
- 【安倍悲報】山上徹也「押し入れに大量のつぼ」 [115996789]
