Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизКто-нибудь компилировал tpapro407 под 2009 или 2010 Делфи? Найти похожие ветки
← →
Kolan © (2010-01-15 12:50) [0]A407_R100.bpl не компилиться под 2009, говорит
[DCC Error] OoMisc.pas(2687): E2100 Data type too large: exceeds 2 GB
на строкеTOBuffer = array[0..pred(High(Integer))] of Char;
.
← →
clickmaker © (2010-01-15 12:53) [1]может, воспринимает как беззнаковое?
← →
pasha_golub © (2010-01-15 13:02) [2]Чуваки :)
TOBuffer = array[0..pred(High(Integer))] of AnsiChar;
← →
pasha_golub © (2010-01-15 13:03) [3]Хотя я прогнал :))
У меня рефлекс везде в 2010 заменять на AnsiChar
← →
Kolan © (2010-01-15 13:29) [4]
> может, воспринимает как беззнаковое?
Не понял, в каком месте?
← →
Kolan © (2010-01-15 13:31) [5]Да, очевидно, что это компонент для 2007 Делфи, где не было юникода и нужно Char везде заменить на AnsiChar, но как не пропустить, его там полно...
← →
clickmaker © (2010-01-15 13:31) [6]блин, это же уникод, точно.
массив из 2 гигов уникодных чаров займет 4 гига
← →
clickmaker © (2010-01-15 13:33) [7]> нужно Char везде заменить на AnsiChar
как альтернатива - array[0..pred(High(Integer) div 2)]
← →
Kolan © (2010-01-15 13:38) [8]Да там-то 20-30 модулей, там везде этот чар. Может как-то разом переопределить можно?
← →
clickmaker © (2010-01-15 13:49) [9]а что, неужели в д2009 нет замены во всем проекте?
← →
Игорь Шевченко © (2010-01-15 14:15) [10]
> Да там-то 20-30 модулей
а ты не ленись
← →
Kolan © (2010-01-15 14:22) [11]Я не ленюсь, я накосячить непонятно где боюсь.
← →
clickmaker © (2010-01-15 14:26) [12]и в этих 20-30 модулях прямо таки дохрена этих самых array[0..pred(High(Integer))] ?
← →
Kolan © (2010-01-15 14:35) [13]Обсуждение проблемы на оф. форуме:
http://sourceforge.net/projects/tpapro/forums/forum/241883/topic/2212505
Нет, clickmaker, там просто Char много где используется в качестве Byte...
← →
Игорь Шевченко © (2010-01-15 14:35) [14]
> Я не ленюсь, я накосячить непонятно где боюсь.
а чего собственно косячить ? У тебя объявлен тип, тип, я надеюсь, объявлен один раз, ну и замени его объявление. Дальше он будет только использоваться.
Собственно, если ты немного задумаешься (весьма полезное занятие), то поймешь, что такие типы объявлены для разыменования указателя в массив и реальных массивов такого типа быть не может по определению. Поэтому что array[0..High(Integer)] of char, что array[0..High(Integer) div 4] of AnsiChar имеют одинаковый смысл. Причем, первый вариант чреват глюками, так как операции с массивом (даже разыменованным) такого типа подразумевают, что каждый элемент имеет размер 2 байта (а не один, по мнению создателей компонента)
← →
clickmaker © (2010-01-15 14:39) [15]> там просто Char много где используется в качестве Byte
ну молодцы, что тут сказать.
они, видимо, и не мечтали, что когда-нибудь в Д появится уникод )
← →
Kolan © (2010-01-15 14:48) [16]Итак, официальной поддержки 2009-го Делфи нет и не планируется, однако, на этой странице есть переделанный пакет
http://www.songbeamer.com/delphi/
Который компилируется и ставится нормально.
Благодарю за обсуждение.
← →
Anatoly Podgoretsky © (2010-01-15 16:48) [17]Подобного рода ошибки делаю многие, почему то предполагают, что размер 1 байт, хотя в документации не так.
> The generic character type is Char, which is equivalent
> to AnsiChar. Because the implementation of Char is subject
> to change, it"s a good idea to use the standard function
> SizeOf rather than a hard-coded constant when writing programs
> that may need to handle characters of different sizes.
> AnsiString ~2^31 characters 4 bytes to 2GB 8-bit (ANSI)
> characters, DBCS ANSI, MBCS ANSI, etc.
> WideString ~2^30 characters 4 bytes to 2GB Unicode
> characters; multi-user servers and multi-language applications
← →
Anatoly Podgoretsky © (2010-01-15 16:51) [18]Надо было объявлять (2gb-1) div SizeOf(Char)
← →
clickmaker © (2010-01-15 16:53) [19]надо было объявлять array[0..pred(High(Integer))] of byte
← →
Kolan © (2010-01-16 11:51) [20]В переделанном модуле, кстати на АнсиЧас заменено.
TOBuffer = array[0..pred(High(Integer))] of AnsiChar;
← →
Германн © (2010-01-16 12:30) [21]
> Kolan © (15.01.10 14:48) [16]
>
> Итак, официальной поддержки 2009-го Делфи нет и не планируется
Пардон. Какая нафиг официальная поддержка?
← →
Kolan © (2010-01-16 13:25) [22]Официальная — это поддержка разработчиков.
Замечу, что доработанный набор, ссылку на который я привел выше, работает не корректно. В частности зэд-модем не может сохранить полученный файл из-за того что путь к нему составляется не верно и код:Assign(aWorkFile, aPathName);
Reset(aWorkFile, 1);
Result := IOResult;
Завершается с ошибкой 123.
← →
Kolan © (2010-01-16 13:39) [23]Если кому понадобится — сообщаю, что ошибку с именем файла я исправил.
Причина была в том, что в одном месте посылалось такое сообщение:function apMsgAcceptFile(P : PProtocolData; FName : PAnsiChar) : Bool;
...
Res := SendMessage(aHWindow, apw_ProtocolAcceptFile, 0, LongInt(FName));
А при его получении срабатывал такой код:
APW_PROTOCOLACCEPTFILE :
begin
FName := StrPas(PChar(lParam));
apwProtocolAccept(P, Accept, FName);
if Accept then begin
if FileName <> "" then
StrPCopy(PChar(lParam), FName);
Result := 1;
end else
Result := 0;
end;
Как видите, при отсылке отсылался указатель на PAnsiChar, а при получении он трактовался как PChar, который теперь юникодовый.
Ошибка исправлена так:APW_PROTOCOLACCEPTFILE :
begin
FName := StrPas(PAnsiChar(lParam));
apwProtocolAccept(P, Accept, FName);
if Accept then begin
if FileName <> "" then
StrPCopy(PAnsiChar(lParam), FName);
Result := 1;
end else
Result := 0;
end;
Однако сколько там еще таких сюрпризов — одному богу известно.
← →
Kolan © (2010-01-16 13:46) [24]А нельзя ли как-то в режиме совместимости скомпилить эти компоненты?
← →
GanibalLector © (2010-01-16 17:06) [25]Собственно, а что ты от модема хочешь ?
Я обычно обходился без всяких tpapro407 и нормально все работало.
З.Ы. А как же "домашка" )) ?
← →
Псалтырь © (2010-01-16 20:34) [26]Колян, берешь по всему коду ищешь строки, PChar"ы и Char"ы и меняешь их на Ansi аналоги. День помучаешься, зато всё будет работать. Я гарантирую это.
Ваш Кэп.
← →
Anatoly Podgoretsky © (2010-01-16 21:03) [27]> Псалтырь (16.01.2010 20:34:26) [26]
Нельзя все менять, к процессу надо подойти творчески.
← →
Германн © (2010-01-17 00:51) [28]
> Псалтырь © (16.01.10 20:34) [26]
>
> Колян, берешь по всему коду ищешь строки, PChar"ы и Char"ы
> и меняешь их на Ansi аналоги. День помучаешься, зато всё
> будет работать. Я гарантирую это.
Ты уверен что только один
> День помучаешься
в случае с продуктом бывшей фирмы TurboPower?
← →
Anatoly Podgoretsky © (2010-01-17 00:53) [29]> Германн (17.01.2010 00:51:28) [28]
Учитывая, что этот продукт относится к спорным местам, где неодназначно нужно ли менять на String, AnsiString, UnicodeString
← →
Германн © (2010-01-17 00:58) [30]
> Anatoly Podgoretsky © (17.01.10 00:53) [29]
>
> > Германн (17.01.2010 00:51:28) [28]
>
> Учитывая, что этот продукт относится к спорным местам, где
> неодназначно нужно ли менять на String, AnsiString, UnicodeString
+1
Вот только сегодня днем разговаривал с приятелем, с которым вместе много лет работали в одной конторе и возможно ещё поработаем вместе в другой. И вспоминал я именно этот случай.
← →
Anatoly Podgoretsky © (2010-01-17 01:16) [31]Вот наглядный пример, скажем FileName обязан быть string, а не AnsiString, в другом случае почти все что связано с передачей через Internet должно быть или AnsiString, или Utf8String поскольку большинство протоколо даже не 8 битные, а 7 битные и приходится применять разного рода трансформации. В тоже время вся Инди состоит из String, а им стыдно, ведь это сетевая библиотека и кому как не им знать, что применение generic типов неправильно, должен быть указан фундаментальный тип AnsiString IB/FB везде указан тип string даже для полей CHAR/VarChar, но здесь хоть несмертельно, но может поставить в тупик, почему некоторые введеные символы превращаются в знаки вопроса и ненужные лишнии преобразования на уровне сервера с nvarchar в varchar и обратно.
Если с Инди понятно, халява и авторов трудно заставить, то библиотеки IB/FB по всей видимости от CodeGear - это иначе как наплевательским отношением не назовешь. Я думаю тагого рода ситуаций в генофонде больше, чем я знаю. И узнавать их придется собственной шкурой.
← →
Anatoly Podgoretsky © (2010-01-17 01:20) [32]Я смотрел исходники, как Пьетте (ICS) адаптировал свой продукт, вот он подошел творчески к этому дело, а ведь мог бы просто объявить все AnsiChar. Это пример ответсвенного отношения.
← →
Германн © (2010-01-17 01:31) [33]
> Anatoly Podgoretsky © (17.01.10 01:20) [32]
>
> Я смотрел исходники, как Пьетте (ICS) адаптировал свой продукт,
> вот он подошел творчески к этому дело, а ведь мог бы просто
> объявить все AnsiChar. Это пример ответсвенного отношения.
>
Поэтому простим ему то, что он полностью плюнул на хелп. Франсуа и так тянет как битюг. Причём бесплатно!
← →
Anatoly Podgoretsky © (2010-01-17 02:20) [34]> Германн (17.01.2010 01:31:33) [33]
Он не плевал, он просто не хочет его делать, тот хелп, что есть на его сайте сделан не им.
← →
Германн © (2010-01-17 02:38) [35]
> Anatoly Podgoretsky © (17.01.10 02:20) [34]
>
> > Германн (17.01.2010 01:31:33) [33]
>
> Он не плевал, он просто не хочет его делать
Ну и я о том же!
Я тоже не хочу делать хелп.
С хелпом та ещё морока!
← →
Кто б сомневался © (2010-01-17 03:06) [36]
> на строке TOBuffer = array[0..pred(High(Integer))] of Char;
> .
ОГО,
А где это можно такой "ахринительно" здоровенный буфер на 2 гига юзать?
Я аж теряюсь...
Не серьезно? Для каких целей?
← →
Anatoly Podgoretsky © (2010-01-17 12:42) [37]> Кто б сомневался (17.01.2010 03:06:36) [36]
До создание еще дело не доходило и не дойдет, речь вообще про компиляцию. Да и не буфер это наверно, а тип.
← →
Kolan © (2010-01-21 12:38) [38]Аналогичная проблема есть и для закачки, смотрите
SendMessageTimeout(aHWindow, apw_ProtocolNextFile, 0,
Longint(FName),
SMTO_ABORTIFHUNG + SMTO_BLOCK,
1000, Res);
и
APW_PROTOCOLNEXTFILE :
begin
FName := "";
apwProtocolNextFile(P, FName);
if FName <> "" then begin
StrPCopy(PAnsiChar(lParam), FName);
Result := 1;
end else
Result := 0;
end;
Соответственно.
← →
Kolan © (2010-01-22 10:15) [39]Еще добавлю, что при использовании сабжевого модуля Д2009 может заглючить и он будет видеть множество ошибок (компиля при этом проект нормально).
Проблема в том, что в Д2009 были переименованы некоторые модули, причем компилятору известны новые аналоги, а среде нет. Вылечить можно прописав алиасы в настройках проекта. Подробнее смотрите http://www.brainrage.com/?p=98
← →
Anatoly Podgoretsky © (2010-01-22 12:09) [40]> Kolan (22.01.2010 10:15:39) [39]
При наличии хотя бы одной ошибки проет никак откомпилирован не будет, ты просто раньше старый экзешник то соотри.
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.172 c