1

Тема: .dll написану на Delphi(Win) переписати на С (linux) для створення .so

Вітаю всіх лінуксоїдів :)
Недавно отримав можливість зробити доступною для Linux користувачів одну Windows програму, точніше отримав її головну частину - вихідний код .dll бібліотеки, що відповідає за основну її функцію - синтиз мовлення, при тому українською мовою.. зважаючи, що я вже  десь три роки користуюся виключно  лінукс мене це порадувало, так як саме цієї програми мені невистачало.. але є одна біда, вихідний код написаний на Delphi, хоча навіть швидше на Pascal з використанням статичних бібліотек від Delphi.. ну Pascal я пам'ятаю, а ось Delphi ні.. (бо реально їм можливо пару раз користувався).. тому виникла проблема, бо не маю ні джерел якісних ні поняття за що відповідають наступні статичні бібліотеки і які містять функції, також якими можна їх замінити на С (тобто С++), тому хочу поцікавитися тим хто що знає про: SysUtils, Windows, Classes, mmsystem.
Більша частина коду доволі проста, аж до моменту відтворення чи створення аудіофайлу у форматі wav (думаю змінити на щось лінуксовіше), там так розумію використовуються деякі функції з тих бібліотек, але які і що роблять лиш здогадуюся, тому прошу вашої допомоги..
До речі, після завершення програма буде вільнодоступною (безкоштовна) до використання усім бажаючим, бо планується її розміщення на офіційному сайті розробника і сторінки підтримки.

2

Re: .dll написану на Delphi(Win) переписати на С (linux) для створення .so

А чому лише лінуксоїдів вітаєте? :)

А взагалі багато там коду?

3

Re: .dll написану на Delphi(Win) переписати на С (linux) для створення .so

Replace написав:

А чому лише лінуксоїдів вітаєте? :)

Звичка, бо переважно форуми по лінукс відвідую, тай тут лиш лінуксоїд може допомогти.

Replace написав:

А взагалі багато там коду?

Ні, там манюня, лиш близько 700 строк :) Мені надали на створення бібліотеки під лінукс (та пакунки по можливості під Fedora, Mandriva, Magiea, RedHat.. і т.д. одним словом під rpm дистрибутиви), точніше не створення, а переписання та вдосконалення. :)

4

Re: .dll написану на Delphi(Win) переписати на С (linux) для створення .so

Відправте мені на Email вихідні тексти, гляну що там і як. Певний досвід програмування на Delphi є, але десь так років 5 назад. Можливо допоможу трохи. Обіцяную нікуди не викладувати і нікому не показувати.
P.S. В мене не Linux, але й не Windows.

5 Востаннє редагувалося HetmanNet (18.07.2012 21:33:25)

Re: .dll написану на Delphi(Win) переписати на С (linux) для створення .so

Replace написав:

Відправте мені на Email вихідні тексти, гляну що там і як. Певний досвід програмування на Delphi є, але десь так років 5 назад. Можливо допоможу трохи. Обіцяную нікуди не викладувати і нікому не показувати.
P.S. В мене не Linux, але й не Windows.

Добре, зараз криптографічний захист зніму і надішлю.. :)
До речі, не підкажеш свій email? Якщо ні, то надішлю через форму тоді.

6

Re: .dll написану на Delphi(Win) переписати на С (linux) для створення .so

Мабуть я забагато читаю Джоела Спольски, але я дуже негативно відношуся до ідеї переписування програми з нуля та ще й на іншій мові програмування.
Тому для початку раджу поставити собі Lazarus і спробувати скомпілювати програму ним. Якщо не вдасться, то можна звертатися на його рідний форум.
Хоча... TTS двигун розміром усього 700 строк... чи варто витрачати на нього час?

7

Re: .dll написану на Delphi(Win) переписати на С (linux) для створення .so

Torbins написав:

Мабуть я забагато читаю Джоела Спольски, але я дуже негативно відношуся до ідеї переписування програми з нуля та ще й на іншій мові програмування.
Тому для початку раджу поставити собі Lazarus і спробувати скомпілювати програму ним. Якщо не вдасться, то можна звертатися на його рідний форум.
Хоча... TTS двигун розміром усього 700 строк... чи варто витрачати на нього час?

1. Можливо негативно, бо не вмієто того робити правильно. Цьому ще треба навчитися.
2. Мені не треба програма на Delpi/Pascal, мені вона треба на С, бо збираємося її дописувати, вдосконалювати і т.д.
3. Він лише синтизує примітивне мовлення, тому має лише 700 строк. На відміну від інших TTS він поки має найменші можливості, які збираємося розширити до можливостей нормальної TTS. Тобто десь за півроку плануємо цей код збільшити в рази, та збільшити базу для покращення вимови (це найважливіше в TTS). Тай треба з чогось починати, тому варто.

8

Re: .dll написану на Delphi(Win) переписати на С (linux) для створення .so

Хм, ну ваша справа, 700 строк не мільйон в кінці-кінців.
А починати варто з компіляції цього коду у тепличних умовах: під віндою, у тій версії делфі, під якою він написаний. Може виявитися, що вам не вистачає якихось важливих бібліотек, або що код неповний чи пошкоджений. Якщо усе нормально, то можна буде спробувати скомпілювати цей код під Лазарусом для Лінукса. І тільки після того як ви переведете код на потрібну платформу, можна починати створювати його версію на іншій мові програмування. Принаймні в такому б порядку організовував перехід особисто я.
Що ж стосується назв юнітів, то SysUtils і Classes це юніти з делфійської бібліотеки, а інші два - імпорт віндового апі.

9

Re: .dll написану на Delphi(Win) переписати на С (linux) для створення .so

Torbins написав:

Хм, ну ваша справа, 700 строк не мільйон в кінці-кінців.
А починати варто з компіляції цього коду у тепличних умовах: під віндою, у тій версії делфі, під якою він написаний. Може виявитися, що вам не вистачає якихось важливих бібліотек, або що код неповний чи пошкоджений. Якщо усе нормально, то можна буде спробувати скомпілювати цей код під Лазарусом для Лінукса. І тільки після того як ви переведете код на потрібну платформу, можна починати створювати його версію на іншій мові програмування. Принаймні в такому б порядку організовував перехід особисто я.
Що ж стосується назв юнітів, то SysUtils і Classes це юніти з делфійської бібліотеки, а інші два - імпорт віндового апі.

Я так розумію, ви не все зрозуміли вірно.
1. В "тепличних умовах" він працює, то перевірено. Вихідний код надав автор з усім, що тільки треба. Одним словом там немає, що тестити.
2. Зараз нам треба переписати на С, то факт. Для цього треба розібратися, що і чим замінити. Бо самі кажете, що там є Windows API,  а його треба чимось замінити, а щоб замінити щось треба знати що робить те "щось", аналогічно з іншими. З чим зараз прошу допомогти, бо Delphi вже не знаю, тай нікого немає хто може знати з нас. А знову починати вчити його немає часу.

10

Re: .dll написану на Delphi(Win) переписати на С (linux) для створення .so

Ви хочете щоби я, не бачачи вашого коду, назвав вам імена функцій? На-жаль я не телепат :)
Якщо треба дізнатися, що з юніту Windows використовується в коді, то просто видаліть його з юзес. Компілятор одразу ж вкаже вам на невідомі ідентифікатори. Далі знаходите в інтернеті описи цих функцій/констант/структур і шукаєте їх відповідники в лінуксі. На тому ж таки форумі Лазаруса можна запитати, там має бути багато народу, що займався портуванням коду з вінди. Можна іще покопатися в вихідному коді Лазарусівської бібліотеки LCL. Вона працюєі під віндою і під лінуксом і, відповідно, на кожний виклик вінапі в ній є виклик лінуксового апі.