![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как заюзать функцию из С-файла в проекте Delphi?
Бегущий человек © (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". Английский язык учим.
Учимся читать ответы в форумах.