SASGIS

Веб-картография и навигация

Вопросы по компиляции SAS

Форум для обсуждения деталей разработки программы SAS.Планета

Модераторы: vdemidov, Tolik

Вопросы по компиляции SAS

Сообщение zed » 27 сен 2011, 18:47

Ввиду того, что с сегодняшнего дня САС стал открытым проектом (да, опять :)), у желающих скомпилировать исходники наверняка появятся вопросы. Вот тут их и предлагаю решать.

Ну и линки:
- исходники: https://bitbucket.org/sas_team/sas.planet.src
- компоненты: https://bitbucket.org/sas_team/sas.requires
- исходники библиотек: https://bitbucket.org/sas_team/sas.lib.external

Рекомендуемый компилятор - XE2

Новичкам в помощь: Образ виртуальной машины с настроенной средой для разработки SAS.Planet
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Вопросы по компиляции SAS

Сообщение zed » 06 авг 2012, 21:48

vdemidov писал(а):
zed писал(а):Не, спасибо, я пока что для этого не созрел :)

Ну вот так всегда.

Работы много, а профита ноль (для меня лично). Пока что у меня и так хватает нереализованных идей, которые требуют времени.

Но может кто-то попробует сделать. Я так думаю, что обратная совместимость с D2007 пострадать не должна и должно будет компилиться в обоих версиях.
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Вопросы по компиляции SAS

Сообщение vdemidov » 06 авг 2012, 22:17

Посмотрел на тему строк. В юните u_GPSModuleByVSAGPS и в своих либах vasketsov по своей привычке напихал кучу работы с указателями и в частности со строками. Причем написано PChar, а нигде не учитывается что он может быть больше одного байта.
Вот яркий пример:
скрытый текст: показать
Код: Выделить всё
  procedure _AllocA(const s: String);
  var dwLen: DWORD;
  begin
    if (nil<>AParamsOut.AStrResult) then begin
      VSAGPS_FreeMem(AParamsOut.AStrResult);
      AParamsOut.AStrResult:=nil;
    end;
    dwLen:=Length(s);
    AParamsOut.AStrResult:=VSAGPS_GetMem(dwLen+1);
    CopyMemory(AParamsOut.AStrResult, PChar(s), dwLen);
    AParamsOut.AStrResult[dwLen]:=#0;
  end;
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Re: Вопросы по компиляции SAS

Сообщение zed » 06 авг 2012, 22:26

Одно из двух:
1. Попросить его адаптировать всё для совместимости с XE2
2. Не дожидаясь никого дописать ansi, аналогично, как это придётся делать в SAS.

Там, в составе alcinoe, кстати, утилитка идёт, которая сама автоматом всё исправляет и прописывает свои модули с реализацией функций для работы с анси.
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Вопросы по компиляции SAS

Сообщение vasketsov » 07 авг 2012, 02:30

zed писал(а):адаптировать всё для совместимости с XE2

Если предположить, что гуя там нигде нет, то достаточно будет везде прописать Ansi?
Или же пойти по другому пути, и вкорячить SizeOf(Char), чтобы сама среда это разруливала?
vasketsov
Специалист
 
Сообщения: 901
Зарегистрирован: 25 июл 2009, 21:15
Благодарил (а): 0 раз.
Поблагодарили: 198 раз.

Re: Вопросы по компиляции SAS

Сообщение vdemidov » 07 авг 2012, 08:04

vasketsov писал(а):Если предположить, что гуя там нигде нет, то достаточно будет везде прописать Ansi?

Скорее всего будет достаточно, но нужно внимательно смотреть на вызовы процедур и функций из юнита Windows. И возможно явно прописывать в имени функции суффикс A.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Re: Вопросы по компиляции SAS

Сообщение zed » 14 авг 2012, 09:51

Кстати, в XE2 ансишные строки тоже с изюминкой - они содержат кодовую страницу и если задействовать её, можно получить плюшки. К примеру, если вместо простого AnsiString использовать:
Код: Выделить всё
{$ifdef UNICODE}
  RawUTF8 = type AnsiString(CP_UTF8); // Codepage for an UTF8string
{$else}
  RawUTF8 = type AnsiString;
{$endif}

... то при всех преобразованиях UnicodeString -> RawUTF8 мы не потеряем данных и не получим нечитаемых символов.

Плюс, есть такая штука:
Код: Выделить всё
RawByteString = type AnsiString($FFFF);

это ансишная строка без какой-либо кодовой страницы. Можно использовать, там где используются строки для передачи данных (вместо TStream). Такое по-моему в JNXLib.pas сделано. А пример использования можно в LibTar.pas посмотреть.
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Вопросы по компиляции SAS

Сообщение vdemidov » 14 авг 2012, 13:52

После долгого ковыряния и подбора нужных версий библиотек. SAS таки скомпилился под Delphi XE2. И даже запустился. Правда пока не работает генерация урлов в паскаль скрипте, но это мелочи.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.

За это сообщение автора vdemidov поблагодарил:
zed (14 авг 2012, 14:19)
Рейтинг: 5.26%
 
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Re: Вопросы по компиляции SAS

Сообщение zed » 14 авг 2012, 14:21

Чую, грядут перемены :)
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Вопросы по компиляции SAS

Сообщение garl » 14 авг 2012, 14:21

очень хочется надеяться на "комплект всего" для неумелых
скачал поставил - победил.
Russian NDN Team
QIP NightlyTester

За это сообщение автора garl поблагодарил:
Dima2000 (14 авг 2012, 16:19)
Рейтинг: 5.26%
 
Аватара пользователя
garl
Гуру
 
Сообщения: 1625
Зарегистрирован: 16 июл 2008, 14:40
Откуда: Краснодар, Кубанская столица.
Благодарил (а): 97 раз.
Поблагодарили: 273 раз.

Re: Вопросы по компиляции SAS

Сообщение vdemidov » 14 авг 2012, 14:56

Ой не скоро еще оно нормально в новой делфе заработает. Там такое количество граблей разбросано, что ой. В том числе, как ни стыдно это признавать, и мной.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Пред.След.

Вернуться в Раздел для разработчиков программы SAS.Планета

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2