Сборка FreePascal в Delphi ?

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Аватара пользователя
Максим
энтузиаст
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Сообщение Максим »

defecator
Я хотел бы ещё раз попросить вас выражать свои претензии более конкретно, а ещё лучше - в виде сообщений об ошибках.

defecator писал(а):Если честно, я много раз пытался работать в Lazarus, но я, видимо, испорчен средой Delphi, и от среды Lazarus меня просто тошнит.
Без обид, если что. :lol:

А я, может быть, считаю вот так, например:
Если честно, я много раз пытался работать в Delphi, но я, видимо, испорчен средой Lazarus, и от среды Delphi меня просто тошнит.
Без обид, если что. :lol:

И, заметьте, это утверждение не менее верное, чем ваше. :mrgreen:

Вы не находите такой разговор несколько контрпродуктивным?
defecator
новенький
Сообщения: 43
Зарегистрирован: 07.09.2009 10:17:01
Откуда: Подольск

Сообщение defecator »

скалогрыз писал(а):а смысл кромсать "помойку", если есть исходники Borland Pascal-я :?


сам компилятор Borland Pascal написан на 100% на ассемблере, под x86,
и особенного смысла копаться в нем нет ни на грамм. Вот сама среда написана на паскале, на TurboVision (она тоже есть в сорцах). Но зачем это все нужно сейчас ?

Тем более, что по возможностям языка BP7 очень сильно отстал. Лет так 12.

Добавлено спустя 2 минуты 46 секунд:
Максим писал(а):Я хотел бы ещё раз попросить вас выражать свои претензии более конкретно, а ещё лучше - в виде сообщений об ошибках


Где я выражаю претензии ?? Да вы что ? :D
И в мыслях такого не было, Я просто высказываю свое мнение по итогам погружения в исходники компилятора. И более - ничего.
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

defecator писал(а):И более - ничего.

я бы сказал что у вас даже подпись холиварная, и она может наносить моральный ущерб некоторым пользователям.
может стоит вести себя более миролюбиво ?
defecator
новенький
Сообщения: 43
Зарегистрирован: 07.09.2009 10:17:01
Откуда: Подольск

Сообщение defecator »

Подпись может казаться холиварной только для тех, кто сам участвует в холиварах и склонен их затевать :-)
Вы же про мой ник ничего не сказали :-)
Я веду себя очень даже миролюбиво - не ссорюсь, совета спрашиваю, примус починяю :-)

Код, который привел Скалогрыз, не помог :cry:
Этот код не помог никак - компилятор упорно зависал либо выкидывал internal error.

скалогрыз писал(а):

Код: Выделить всё

function IndexWord(Const buf: array of word;len:LongInt;b:word):LongInt; overload;
begin
  for i := 0 to len - 1 do
    if buf[i]=b then begin
      Result := i;
      Exit
    end;
  Result:=-1;
end;


ах, да! и конечно же:

Код: Выделить всё

function IndexWord(Const buf;len:LongInt;b:word):LongInt; overload;
begin
  Result:=IndexWord( PWordArray(@buf), len, b);
end;



Пришлось временно обойтись счетчиком слов. Криво и стыдно так делать, не разобравшись, но "причесывание" оставлю на попозже, так как нужно получить работающую версию компилятора, которая будет эталонной в последущей модификации.

Код: Выделить всё

function IndexWord(Const buf;len:LongInt;b:word):LongInt;
var
  psrc,pend : pword;
  Position : LongInt ;
begin
.............
    Position := 0 ;
    while DWORD(psrc) < DWORD(pend) do
      begin
        if Word(psrc^) = b then
          begin
            result:= Position ;
            exit;
          end;
        DWORD(pSrc) := DWORD(pSrc) + SizeOf(b) ;
        Inc(Position) ;
      end;
  result:=-1;
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

Delphi 2010

Код: Выделить всё

function IndexWord(Const buf; len:LongInt; b:word): LongInt;
var i: LongInt;
    P: PWordArray;
begin
  P := @buf;
  for i := 0 to len - 1 do
    if P[i] = b then Exit(i);
  Result := -1;
end;

defecator
новенький
Сообщения: 43
Зарегистрирован: 07.09.2009 10:17:01
Откуда: Подольск

Сообщение defecator »

sign, спасибо ! Ты сэкономил мне время !

Вопрос.
Компилятор-то работает, пыхтит, но для меня является загадкой, почему не поддерживается "class" ?
TObj = object - работает, а TObj = class - пишет, что неизвестный идентификатор "class".

В чем может быть дело ?
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

Сложно сказать, у меня всё в порядке

Код: Выделить всё

unit Unit3;

interface

type
   TObj =class

   end;
implementation

end.

Компилируетс я без ошибки.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

defecator
В коде добавте директиву:

Код: Выделить всё

{$mode objfpc}

или

Код: Выделить всё

{$mode delphi}
defecator
новенький
Сообщения: 43
Зарегистрирован: 07.09.2009 10:17:01
Откуда: Подольск

Сообщение defecator »

Вопрос по существу:

Можно ли как-то добиться, чтобы в выходной ASM-файл попадал не только код моей программы,
но и все связанные с ней (вызываемые из моей программы) подпрограммы RTL (и других библиотек) ?

То есть сейчас в выходном файле test.asm присутствует вызов:

Код: Выделить всё

   bl   fpc_round_real


А сама подпрограмма "fpc_round_real" отсутствует. Понятно, что она есть в другом файле (system.asm),
но хотелось бы, чтобы она была в листинге моей программы.

И второй вопрос.
В коде компилятора есть оператор "><", комментарий к нему: ">< is for a symetric diff for sets"

Как можно это представить для компилятора Delphi ? Сейчас я сделал просто операцию "-" вместо "><"
Ответить