Вопрос про компилятор.
Модератор: Модераторы
Вопрос про компилятор.
Вот у меня недопонимание небольшое. У меня в универе лабы по turbopascal. А freepascal это тоже самое? Как понимаю нет, тут больше библиотек всяких и возможностей ( исправьте меня, если это не так). Так вот код, который мне сдавать на turbo pascal, он будет работать на фрипаскаль? Просто зачёт через 3 дня, хотелось подготовиться( у меня перездача из за недопуска), а turbopascal найти не могу, все ссылки сюда идут. У меня просто 64 битная винда, поэтому не так так легко найти под неё.
prowoke писал(а):Вот у меня недопонимание небольшое. У меня в универе лабы по turbopascal. А freepascal это тоже самое?
в 99% это тоже самое. так что, скорее всего всё заработает без изменений. Но если что - ты говори!
Спасибо, буду пробовывать сегодня ночью, а не заработает, то секс ночью мне точно обеспечен.
prowoke писал(а):У меня просто 64 битная винда, поэтому не так так легко найти под неё.
Турбо Паскаля, как и любой другой досовской программы, под Винду-64 в принципе не найдёшь (запуск на эмуляторе не в счёт) -- поскольку в 64-разрядном режиме отсутстувует возможность выполнения 16-разрядного кода, изначально предназначенного для реального режима.
prowoke
Есть определённая специфика, которая на FreePascal в принципе работать не будет. Например работа с адресами памяти через База:Сегмент или непосредственное обращение по какому-то адресу памяти, где априори предполагается нахождение, например, данных видеоадаптера.
Всё остальное, что не отходит от стандартов Паскаля, работать будет.
Есть определённая специфика, которая на FreePascal в принципе работать не будет. Например работа с адресами памяти через База:Сегмент или непосредственное обращение по какому-то адресу памяти, где априори предполагается нахождение, например, данных видеоадаптера.
Всё остальное, что не отходит от стандартов Паскаля, работать будет.
Сортировка массивов
.
Vadim писал(а):prowoke
Есть определённая специфика, которая на FreePascal в принципе работать не будет. Например работа с адресами памяти через База:Сегмент или непосредственное обращение по какому-то адресу памяти, где априори предполагается нахождение, например, данных видеоадаптера.
Всё остальное, что не отходит от стандартов Паскаля, работать будет.
Код: Выделить всё
Var
s : string;
a : byte absolute s;
begin
s := 'Stroka simvolov';
writeln('Длина строки s:',a)
end.Абсолютные переменные на строках не работают. Теоретически заработают, если объявить их как ShortString
В FreePascal вообще ругань будет на s[0], хотя в turbo pascal это нормальный способ обращения к длине.
PapaNT писал(а):Абсолютные переменные на строках не работают. Теоретически заработают, если объявить их как ShortString
Это потому что строки теперь - не статические, а динамические переменные.
Ребят, если уж вы расказываете новичку о строках, то расказывайте все.
строки фрюха переняла из дельфи. старый тип статических строк который был реализован на турбопаскале теперь называется ShortString. дельфя ввела новый тип динамичеких строк AnsiString и WideString - ето указатель. есть еще во фрюхе какието недокументированые типы LongString, чем оно от AnsiString отличается незнаю. в новых типах строк длина строки лежит не в 0м байт а в скрытой структуре описателя строки и получать ее надо функцией Length а устанавливать SetLength.
так вот тип String теперь отображается на ShortString или AnsiString в зависимости от настроек компилятора или макросов {$H+/-}
строки фрюха переняла из дельфи. старый тип статических строк который был реализован на турбопаскале теперь называется ShortString. дельфя ввела новый тип динамичеких строк AnsiString и WideString - ето указатель. есть еще во фрюхе какието недокументированые типы LongString, чем оно от AnsiString отличается незнаю. в новых типах строк длина строки лежит не в 0м байт а в скрытой структуре описателя строки и получать ее надо функцией Length а устанавливать SetLength.
так вот тип String теперь отображается на ShortString или AnsiString в зависимости от настроек компилятора или макросов {$H+/-}
