• R/O
  • SSH
  • HTTPS

apollo: Commit


Commit MetaInfo

Revisão554 (tree)
Hora2007-06-20 05:41:41
Autormoriq

Mensagem de Log

convert encoding if defined Phi::DELPHI_ENCODING.

Mudança Sumário

Diff

--- apollo/trunk/sample/encoding.rb (nonexistent)
+++ apollo/trunk/sample/encoding.rb (revision 554)
@@ -0,0 +1,30 @@
1+#!/usr/bin/ruby
2+require 'phi'
3+
4+require 'iconv'
5+module Phi
6+ DELPHI_ENCODING = 'Shift_JIS'
7+ RUBY_ENCODING = 'UTF-8'
8+ RubyDelphiCodeConverter = Iconv.new(DELPHI_ENCODING, RUBY_ENCODING)
9+ DelphiRubyCodeConverter = Iconv.new(RUBY_ENCODING, DELPHI_ENCODING)
10+module_function
11+ def convert_encoding_from_ruby_to_delphi(str)
12+ p [:ruby_to_delphi, str]
13+ RubyDelphiCodeConverter.iconv(str)
14+ end
15+ def convert_encoding_from_delphi_to_ruby(str)
16+ p [:delphi_to_ruby, str]
17+ DelphiRubyCodeConverter.iconv(str)
18+ end
19+end
20+# file encoding: UTF-8
21+str = 'おはよう' # ohayou
22+p str
23+# delphi_str = Phi.convert_string_from_ruby_to_delphi(str)
24+# p delphi_str
25+form=Phi::Form.new(str)
26+form.show
27+caption = form.caption
28+# ruby_caption = Phi.convert_string_from_delphi_to_ruby(caption)
29+p caption
30+Phi.mainloop
--- apollo/trunk/src/u/uPhi.pas (revision 553)
+++ apollo/trunk/src/u/uPhi.pas (revision 554)
@@ -107,7 +107,7 @@
107107
108108 function ap_const_get(klass: Tvalue; const name: String): Tvalue;
109109 begin
110- result := rb_const_get(klass,rb_intern(PChar(name)));
110+ result := rb_const_get(klass, rb_intern(PChar(name)));
111111 end;
112112
113113 procedure ap_const_set(klass: Tvalue; const name: String; val: Tvalue);
--- apollo/trunk/src/u/uConv.pas (revision 553)
+++ apollo/trunk/src/u/uConv.pas (revision 554)
@@ -29,6 +29,8 @@
2929 function dl_Integer(v: Tvalue): Integer;
3030 function ap_Float(v: Double): Tvalue;
3131 function dl_Double(v: Tvalue): Double;
32+function ap_String_0(S: string): Tvalue;
33+function dl_String_0(v: Tvalue): string;
3234 function ap_String(S: string): Tvalue;
3335 function dl_String(v: Tvalue): string;
3436 function ap_Variant(A: Variant): Tvalue;
@@ -54,7 +56,7 @@
5456
5557 implementation
5658
57-uses uDateTime;
59+uses uDateTime, uPhi;
5860
5961 function ap_Handle(h: THandle): Tvalue;
6062 begin
@@ -103,14 +105,44 @@
103105 result := rb_num2dbl(v);
104106 end;
105107
108+function ap_String_0(S: string): Tvalue;
109+begin
110+ result := rb_str_new(PChar(S), length(S));
111+end;
112+
113+function dl_String_0(v: Tvalue): string;
114+begin
115+ Check_Type(v, T_STRING);
116+ SetString(result, ap_str_ptr(v), ap_str_len(v));
117+end;
118+
119+function EnableCodeConv: Boolean;
120+begin
121+ result := rb_const_defined(mPhi, rb_intern('DELPHI_ENCODING')) <> 0;
122+end;
123+
124+function ConvertEncodingFromDelphiToRuby(v: Tvalue): Tvalue;
125+begin
126+ result := rb_funcall2(mPhi, rb_intern('convert_encoding_from_delphi_to_ruby'), 1, @v);
127+end;
128+
129+function ConvertEncodingFromRubyToDelphi(v: Tvalue): Tvalue;
130+begin
131+ result := rb_funcall2(mPhi, rb_intern('convert_encoding_from_ruby_to_delphi'), 1, @v);
132+end;
133+
106134 function ap_String(S: string): Tvalue;
107135 begin
108136 result := rb_str_new(PChar(S), length(S));
137+ if EnableCodeConv then
138+ result := ConvertEncodingFromDelphiToRuby(result);
109139 end;
110140
111141 function dl_String(v: Tvalue): string;
112142 begin
113143 Check_Type(v, T_STRING);
144+ if EnableCodeConv then
145+ v := ConvertEncodingFromRubyToDelphi(v);
114146 SetString(result, ap_str_ptr(v), ap_str_len(v));
115147 end;
116148
--- apollo/trunk/src/u/uIO.pas (revision 553)
+++ apollo/trunk/src/u/uIO.pas (revision 554)
@@ -49,7 +49,7 @@
4949 begin
5050 if RTYPE(str) <> T_STRING then str := rb_obj_as_string(str); { to_s }
5151 len := ap_str_len(str);
52- if len <> 0 then Stdout(dl_String(str));
52+ if len <> 0 then Stdout(dl_String_0(str));
5353 end;
5454 result := INT2FIX(len);
5555 end;
--- apollo/trunk/src/u/uProp.pas (revision 553)
+++ apollo/trunk/src/u/uProp.pas (revision 554)
@@ -221,7 +221,7 @@
221221 name := last_func_name;
222222 real_name := trimUnder(name);
223223 S := GetStrProp(real, trimUnder(name));
224- result := rb_str_new2(PChar(S));
224+ result := ap_String(S);
225225 end;
226226
227227 function Prop_set_path(This, v: Tvalue): Tvalue; cdecl;
Show on old repository browser