Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.056 c
15-1265405405
Юрий
2010-02-06 00:30
2010.08.27
С днем рождения ! 6 февраля 2010 суббота


2-1272979946
viktooor
2010-05-04 17:32
2010.08.27
Лицензия в 2010


2-1275568785
O.O
2010-06-03 16:39
2010.08.27
Проблемы со шрифтами в W7 и Vista


2-1273649711
@!!ex
2010-05-12 11:35
2010.08.27
Обработка сообщений в отдельном потоке.


2-1274637067
REX
2010-05-23 21:51
2010.08.27
Печать





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский