Saat ini, di saku orang biasa terdapat komputer pribadi yang kuat, yang hanya dapat Anda impikan 10-20 tahun yang lalu. Dan jika Anda memiliki kilometer kode Windows yang di-debug dan aplikasi yang berfungsi dengan baik dan utilitas yang ditulis dalam Delphi, Anda pasti ingin menggunakan kekayaan ini untuk pengembangan ponsel. Dan juga pengalaman yang didapat selama pemrograman di bawah Windows. PAS2JS akan membantu Anda menggabungkan dua dunia: pengembangan untuk Windows dan pembuatan aplikasi Web dan modul Node.js.
Beberapa kesulitan yang ditemukan dari pengalaman pribadi dibahas dalam artikel ini.
Mengapa tidak belajar saja JavaScript dan menulis aplikasi Web di atasnya?
Saya telah belajar JavaScript dengan cukup baik. Tapi pertama-tama, pemrograman untuk Web lebih dari sekedar mengetahui bahasa. Kedua, kemampuan untuk menulis satu kode untuk platform yang berbeda sangat berharga. Anda dapat men-debug modul aplikasi di Delphi IDE menggunakan debugger dan editornya yang kuat, dan kemudian, dengan menambahkan binding yang diperlukan, dapatkan aplikasi yang siap pakai untuk situs tersebut. Dan ketika Anda memperbaiki kesalahan atau menambahkan fungsionalitas baru ke aplikasi untuk Windows, itu akan cukup hanya untuk mengkompilasi ulang modul JavaScript di PAS2JS .
Perlu dicatat bahwa sementara PAS2JS tidak mendukung semua fitur bahasa Delphi, mereka terdaftar di situs . Juga, beberapa fragmen kode PAS2JS yang tampaknya sederhana tidak dapat ditransformasikan ke dalam JavaScript.
Kesulitan terjemahan
Jadi, paket PAS2JS yang baru diunduh dari FTP , kami mencoba untuk mengkompilasi ulang "Hello World" yang sederhana, dan segera berhenti di:
uses System.SysUtils;
Kesalahan: tidak dapat menemukan unit "System.SysUtils"
Paket PAS2JS siap pakai, yang dapat ditemukan di folder paket, sebagian duplikat unit sistem Delphi. Tetapi mereka tidak memiliki awalan dalam nama. Solusinya sederhana: hapus awalan "Sistem." dari nama unit. Program ini dikompilasi dalam Delphi (jika tidak, periksa keberadaan awalan "Sistem" di Nama Lingkup Unit, dalam menu Proyek Delphi | Pilihan | Delphi Kompiler).
Ketik casting dalam konstanta
PAS2JS tidak mendukung tipe casting dalam ekspresi konstan:
const CODE_A = Word('a');
Kesalahan: Ekspresi konstan yang diharapkan
Dalam hal jenis yang disebutkan, Anda dapat mencoba mengubahnya, begini:
const CODE_A = Ord('a');
Juga, PAS2JS tidak mengerti fungsi bahasa built-in dari Lo dan Hi. Dalam definisi konstanta, mereka dapat diganti sebagai berikut:
const LO_BYTE = $1234 and $FF;
Karakter dan string ANSI
Saya harap Anda sudah beralih ke string Unicode di proyek Delphi Anda? Jika Anda meninggalkan beberapa baris dalam format ANSI untuk menghemat memori, mereka tidak akan dikonversi ke JavaScript: PAS2JS tidak tahu tipe AnsiChar, AnsiString, Utf8String dan RawByteString. Pertimbangkan untuk menggantinya dengan jenis Unicode, atau Byte dan Array of Byte.
Berikut ini contoh mengganti AnsiChar dengan Byte:
Surat tak bernyawa Γ³
Sebagai rasa ingin tahu: dalam bahasa Polandia ada huruf Γ³ - O kreskowane, Unicode # $ 00F3. Untuk beberapa alasan, PAS2JS tidak menyukainya, dan dalam beberapa kasus tidak dapat melihat garis jika huruf ini termasuk di dalamnya:
var s: string; begin s := #$00F3'abdef';
Pernyataan kasus
Kejutan mendadak terjadi pada pernyataan kasus, di mana PAS2JS menolak untuk menerima surat Rusia sebagai opsi:
ch := ''; case ch of '': Writeln(' ""');
Definisi konstanta untuk huruf Rusia yang diperlukan membantu:
const ckbA = #$410;
Kesimpulan
Saya berhasil mengkompilasi proyek Delphi kecil untuk Web, membuat perubahan yang relatif kecil pada kode sumber program, dan untuk menghemat waktu saya menulis artikel ini. Pengujian menunjukkan bahwa kedua versi program: untuk Windows dan untuk Web, bekerja persis sama. Ini tidak diragukan lagi sukses: sekarang saya dapat mengembangkan proyek ini dengan menyelesaikan program dalam Delphi, dan menerjemahkannya ke dalam JavaScript menggunakan PAS2JS.
Adapun cacat kecil yang diidentifikasi, saya yakin mereka akan cepat dihilangkan. Karena proyek PAS2JS terbuka dan gratis, dikembangkan secara aktif oleh komunitas Free Pascal .