Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как заюзать функцию из С-файла в проекте Delphi?


Страницы:   1 2

Бегущий человек ©   (2008-03-23 14:53:00) 

Здравствуйте!
Есть С- файл, в котором есть некая функция. Компилирую в obj. Задача: вызвать функцию из указанного obj внутри проекта Delphi.
Причина такого изврата: в основной задаче встретились такие преобразования типов, которые могли быть реализовано только на С (что и было сделано). Вот такой вопрос


Бегущий человек   (2008-03-25 04:49:00) [1]

2 A.P.
Кто наезжает на Делфи, тот для Вас сразу троль...
На Делфи буду писать простые программы, что называется "на коленке". Удобная кнопкобросалка,  отчего же её не юзать.
2 DrPass. На IOCCC, конечно, не заявлялся,  но  уродский код видел в книжке Прата, Уитни...а по ней я и учился. На Си легче написать корявый код, но и остроумный тоже. На Делфи всё гладенько, серенько, работает строго по науке. Мерде!


Anatoly Podgoretsky   (2008-03-24 20:16:00) [2]

> Бегущий человек  (24.03.2008 17:30:29)  [29]

А очередной троль, ты еще здесь.


Anatoly Podgoretsky   (2008-03-24 20:15:00) [3]

> Бегущий человек  (24.03.2008 16:25:23)  [23]

Только хотел поговорить, а человека уже потеряли, жалко, пусть теперь дурость творит в Си, только я сомневаюсь, что свалил на Си.


DrPass   (2008-03-24 18:41:00) [4]


> На котором можно реализовать подобную задачу не так, как
> доктор прописал, а так, как красивее/удобнее/понятнее.

Сразу видно, что человек никогда еще не разбирал написанные на Сях спагетти...


Оригинал   (2008-03-24 17:55:00) [5]


> Есть такие люди, которые не любят подстраиваться под компиляторы.
>  Вот для таких людей и существует С. На котором можно реализовать
> подобную задачу не так, как доктор прописал, а так, как
> красивее/удобнее/понятнее.


Видали таких.
После них отладка занимает в 2-3 раза больше времени(как минимум), чем разработка.
После таких приведений и т.п. вещей и возникают трудноуловимые ошибки.


Бегущий человек   (2008-03-24 17:30:00) [6]

Код подключен, всё работает нормально. Спасибо еще раз palvaи DrPass.
2Сергей М.
Есть такие люди, которые не любят подстраиваться под компиляторы. Вот для таких людей и существует С. На котором можно реализовать подобную задачу не так, как доктор прописал, а так, как красивее/удобнее/понятнее. Оставляю Вас долбить хвалу Вирту, Дийкстре и прочим замшелым структурникам


Сергей М.   (2008-03-24 16:51:00) [7]


> Johnmen ©   (24.03.08 16:44) [27]


Судя по


> в Си, скомпилить его и подключить скомпилированный С-код
> к делфи


пока еще не аминь - нас ждет очередная ламосерия


Johnmen   (2008-03-24 16:44:00) [8]

Да ладно вам... Чел уже свалил практически. На С.
Аминь...:)))


Сергей М.   (2008-03-24 16:38:00) [9]


> Бегущий человек ©   (24.03.08 16:21) [22]


> Почему не работает в Делфи?


Потому что не компилируется)

А чтобы компилировалось, нужно писать не ахинею, а осмысленное (с т.з. и программиста и компилятора) выражение.

Те самые твои потуги с бессмысленным приведением типов и есть ахинея)
см. [25]


DrPass   (2008-03-24 16:34:00) [10]


> Фактически, требуется следующее
> var d:Double;
> ...
> d:=Double(Int64(1 shl 32)*F)/Double(72000000)+0.5 ;

Я, конечно, безумно рад, что С приобретет нового достойного последователя.
Но в чем у тебя проблема? Обязательно слово double в формулу хотелось вписать? А просто d:= (1 shl 32)*F/72000000+0.5 сделать никак нельзя было? 8-)


Бегущий человек   (2008-03-24 16:26:00) [11]

И вообще переезжаю на Си. Достал меня Паскаль.


Бегущий человек   (2008-03-24 16:25:00) [12]

поэтому, чтобы не иметь секс с безумным компилятором Делфи, я решил записать это выражение в Си, скомпилить его и подключить скомпилированный С-код к делфи.


Бегущий человек   (2008-03-24 16:21:00) [13]

>Loginov Dmitry ©   (24.03.08 08:01) [21]
Фактически, требуется следующее
var d:Double;
...
d:=Double(Int64(1 shl 32)*F)/Double(72000000)+0.5 ;

На Си аналогичное приведение прекрасно работает. Почему не работает в Делфи? Что тут логически несовместимого? Все очень логично - кроме компилятора Делфи


Loginov Dmitry   (2008-03-24 08:01:00) [14]

> пусть мне сделает такоe Double(Int64(....


Такое приведение может делать любой, и даже не сильно умный и не все умеющий в Delphi. А то, что в этом возникли какие-то трудности у тебя - проблема в твоем невежестве и упертости. Такое приведение в Delphi можно выполнить еще множеством способов (но ты ни одного из них не знаешь).
Приведение Int64 к Double - попытка привести логически несовместимые сущности - есть верх извращения. Оно тебе точно нужно?


Бегущий человек   (2008-03-24 06:16:00) [15]

Германн
Ага, английский ты знаешь лучше чем я, но слово typecast как-то не попадалось, а словаря под рукой не было... Оскорблениями авторитета не завоевать.
Старый дядя ЦУП   (24.03.08 04:13) [19]
Не заметил поста DrPass [11]. За что извиняюсь перед ним и слова про умничанье беру обратно. Вот этого не знал. Действительно не знал:

double absolute i;


Старый дядя ЦУП   (2008-03-24 04:13:00) [16]


> Бегущий человек ©   (23.03.08 14:54) [1]
> P.S. поиск по интернету ничего не дал


И в интернете тоже получается научиться искать не сразу - опыт нужен.

Поищи в яндексе по ключевым словам COFF OMF OBJ DELPHI
Изучи первые десяток ссылок.
Плюс справка Delphi по слову OBJ.

Этого достаточно для поиска решения.


Германн   (2008-03-24 03:57:00) [17]


> Старый дядя ЦУП   (24.03.08 03:47) [17]

Увы и Ах. :(


Старый дядя ЦУП   (2008-03-24 03:47:00) [18]


> Германн ©   (24.03.08 03:44) [16]


Увы, оказывается даже описанный в трёпе интерфейс, оказывается, не универсален для всех случаев жизни.


Германн   (2008-03-24 03:44:00) [19]


> Бегущий человек ©   (24.03.08 03:25) [14]

> Германн
> Как это не относится, если выдаваемая ошибка называется
> "Invalid typecast". Английский язык учим.
>

Аглицкий знаю достаточно хорошо. Уверен, что намного лучше чем ты. А выдаваемая ошибка говорит, что ты (извини) - дурак! Примите и прочь!


Старый дядя ЦУП   (2008-03-24 03:40:00) [20]


> Бегущий человек ©   (24.03.08 03:25) [14]
> DrPassВот и не умничай впредьГерманнКак это не относится,
>  если выдаваемая ошибка называется "Invalid typecast". Английский
> язык учим.


Учи букварь.
Тебе уже DrPass сказал, что Delphi автоматически приведение типов сделает.

var
 i: Int64;
 d: Double;
begin
 i := 10;
 d := i;



> Как это не относится, если выдаваемая ошибка называется
> "Invalid typecast". Английский язык учим.


Учимся читать ответы в форумах.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо