コードをDelphiからCに変換する#
まず、DelphiコードをC#コードに変換する例を示します。
Delphiコード
unit Unit3; interface type TMyClass = class _str: string; constructor Create; procedure setStr(s2: string); public class var FClassField: integer; end; TMyClassD = class of TMyClass; procedure DoSomeThing; implementation procedure DoSomeThing; begin end; { TMyClass } constructor TMyClass.Create; var c: char; i: byte; cod: integer; s: string; cls: TMyClassD; begin cls := TMyClass; inherited; DoSomeThing; Val('5', i, cod); c := '1'; s := c; end; var cls: TMyClass; s: string; procedure TMyClass.setStr(s2: string); begin s2[4] := 'a'; end; initialization cls := TMyClass.Create; s := '123456'; cls._str := s; s[3] := '0'; cls.setStr(s); end.
翻訳後、コードは次のようになります。
C#コード
using System; using System.Runtime.InteropServices; using System.Collections.Generic; using System.Data; using System.Linq; using System.IO; using System.Text; using FastCode.Delphi.Core._System; namespace Project3 { public static partial class Unit3_Module { public static void Unit3_Initialization_() { cls = TMyClass.Create(); s = "123456"; cls._str = s; //s[3] = '0'; s = s.Substring(0, 2) + '0' + s.Substring(3); cls.setStr(s); } public static void DoSomeThing() { } internal static TMyClass cls; internal static string s; } public partial class TMyClass : TObject { public override void __Create__() { Char c; byte i; int cod; string s; Class_of_TMyClass cls; cls = Class_of_TMyClass.Instance; base.__Create__(); Unit3_Module.DoSomeThing(); System_Module.Val('5'.ToString(), out i, out cod); c = '1'; s = c.ToString(); } public void setStr(string s2) { //s2[4] = 'a'; s2 = s2.Substring(0, 3) + 'a' + s2.Substring(4); } public static TMyClass Create() { TMyClass _instance = new TMyClass(); _instance.__Create__(); return _instance; } public string _str; public static int FClassField; } public partial class Class_of_TMyClass { protected Class_of_TMyClass() { } public TMyClass Create() { return TMyClass.Create(); } public static Class_of_TMyClass Instance = new Class_of_TMyClass(); public int FClassField { get { return TMyClass.FClassField; } set { TMyClass.FClassField = value; } } } }
はい。移行ライブラリを接続してコンパイルすると、C#コードが機能します。
より複雑で興味深い場所があります-たとえば、名前付きで、つまりObj.Items [インデックス]の形式でアクセスできるインデックスを使用したプロパティの実装(Delphiを知っている場合-それらは理解します)が、現在このコードは手元にありません。
FoxProの外観
FoxProで小さなアプリケーションをすばやく配布したところ、次のようになりました。
![](https://habrastorage.org/files/4b8/ba2/03b/4b8ba203bfc242eba94dac1a8720130e.png)
以下のC#+ WPFでの外観。
申し訳ありませんが、ウィンドウタイトルのボタンとタイトルのスタイルが置き換え可能な完全なテーマを検索しませんでした
![](https://habrastorage.org/files/122/022/8db/1220228db10a40eaab89c0f9d72bfcb3.png)
3つの追加トピックがあります。
グラス
スチールブルーグラデーション
メトロライト
![](https://habrastorage.org/files/2fc/078/44f/2fc07844f8df48a992d7a0921b679b26.png)
グラス
![](https://habrastorage.org/files/ca5/ffd/081/ca5ffd081aca46ac967ebee5e1df2cf9.png)
スチールブルーグラデーション
![](https://habrastorage.org/files/fa1/332/fa7/fa1332fa744949fa9ed1e0a9497fd31d.png)
メトロライト
変換例に関する質問がまだある場合は、コメントしてください。
DelphiからC#へのPS変換は、コンバーターのデバッグプロセスで使用されたテストプロジェクトの1つです。
特にデモ用に、急いで作られたFoxProのPPSフォーム。