[Delphi] RichEdit - пробелмы под Win98SE при размерах текста >64K
А вот под 98-й есть ограничения. вроде как надо вручную длину увеличивать.
И не надо, говорить, что винда написнана на С++ - это неверно.
И Дельфи в качестве основного языка пользую потому, что этот разработка программ на этом языке идёт процентов на 50-70 быстрее, чем на С или С++.
по любому плюсовая часть там больше паскальной

>И Дельфи в качестве основного языка пользую потому, что этот разработка программ на этом языке идёт процентов на 50-70 быстрее, чем на С или С++.
Йо!


ЗЫ: Да. Когда тебе надо написАть программу с тремя кнопками - дельфя рулит. Шарп, правда, еще сильнее рулит... Ну так вот, а как только тебе надо сделать что-нить нетривиальное, это выливается в нечеловеческое количество гемора. Мой Сосед Ексидлер, например, часов пять иппался с дельфей на тему листбокса со статичным фоном (картинка, которая не скроллиццо вместе с текстом причем так чтобы не мигало все што твой песдетс. В результате оверрайдил и переписывал несколько функций оригинального листбокса используя сурцы. Очень забавно выглядело.

Непонятно только чем бы ему в данном случае C++ помог.
Ну типа просто если та мессага не поможет, то юноша конкретно заебется создавать компонентик (который ричедит2.0 и который гарантированно держит большие буфера) ручками. А потом еще писАть для него враппер, штоб из главной проги общаццо без особого гемора. А в плюсах - не заебся бы. А в шарпе - не понадобилось бы (а если бы понадобилось, то не заебся бы, потому что PlatformInvoke там рулит!).
конкретно заебется создавать компонентик ручками. А потом еще писАть для него враппер, штоб из главной проги общаццо без особого гемора. А в плюсах - не заебся бы.А чем в плюсах проще создавать обертки над WinAPI ?
А чем в плюсах проще создавать обертки над WinAPI ?
Во-первых, тебе не приходится лазить с высунутым языком по windows.h, winbase.h, winuser.h, windefs.h и еще десятку ашничков в поисках констант, структур и сигнатур апи-функций. Во-вторых не приходится задумывацца на полчаса о том, что дать вместо LPTCSTR. А если чувак в плюсах не рюхает, то ему будет очень плохо и неуютно. И даже я не вполне уверен, анси или уникодная эта фигня должна быть, и как это определить.
В третих и в главных: если ты пишешь на чистом винапи у тебя есть Default WndProc, которая все что нужно обработает. А у дельфи есть туева хуча внутренних мессаг и прочей херни, которые, наверное, надо будет обрабатывать отдельно. Я вот, например, плохо себе представляю, как адекватно реагировать на ресайз формы. А еще если в плюсах посыл WM_GETTEXT каждый раз когда ты хочешь получить текст из едита выглядит достаточно естественно, то в дельфе заиппешься так делать, поетому надо будет писАть адекватный враппер.
ЗЫ: Есть маза. Поискать в инете компонентик для дельфи, который умеет большой буфер под 98.
ЗЗЫ: Ффторая маза. Лезешь в сурцы VCL, пиздишь сурцы ричедита, пытаешься их подправить требуемым образом.
Во-первых, тебе не приходится лазить с высунутым языком по windows.h, winbase.h, winuser.h, windefs.h и еще десятку ашничков в поисках констант, структур и сигнатур апи-функций.действительно не приходится искать в дельфях, windows.pas и messages.pas - всего два модуля

Во-вторых не приходится задумывацца на полчаса о том, что дать вместо LPTCSTR. А если чувак в плюсах не рюхает, то ему будет очень плохо и неуютно. И даже я не вполне уверен, анси или уникодная эта фигня должна быть, и как это определить.Не так много типов и как правило они продублированны с теми же названиями что и в SDK. Например заглянешь в windows.pas и увидишь :
type
LPSTR = PAnsiChar;
LPCTSTR = PAnsiChar; { should be PWideChar if UNICODE }
В третих и в главных: если ты пишешь на чистом винапи у тебя есть Default WndProc, которая все что нужно обработает. А у дельфи есть туева хуча внутренних мессаг и прочей херни, которые, наверное, надо будет обрабатывать отдельно.А что мешает в дельфях сделать WndProc и работать в традициях чистого WinAPI ?
В LMDTools вроде БЫЛ ричедит, который НЕ ГЛЮЧИТ под Win9x....
например, здесь: http://home.ural.ru/~delphi3/delp/vcl/red/reexa.htm#add
действительно не приходится искать в дельфях, windows.pas и messages.pas - всего два модуля . А зачем собственно искать сигнатуры функций ? Они в написаны в хелпе. ( Windows32 SDK)
Чисто для самообразования можешь найти в сдк мега-функцию NetShareEnum, потом ффтыкнуть в ее самый главный параметр (который под 98 пойнтит на массив share_info_50 а затем в описАнии этой самой share_info_50 увидеть клевую константу SHPWLEN. После чего поискать ее где-нить.
Лично я после этого случая забил на дельфи. Вообще. И ни разу ее с тех пор не запускал. Чего и вам советую.
ЗЫ: А вообще похуй. Фанаты дельфей на фоне VB программеров выглядят почти вменяемыми =)
typedef struct _share_info_50это не самое сложное что могло бы встретится. Я вот например при написании программы дозвона столкнулся с проблемой использования RAS Api,
{
char shi50_netname[LM20_NNLEN+1];
unsigned char shi50_type;
unsigned short shi50_flags;
char FAR* shi50_remark;
char FAR* shi50_path;
char shi50_rw_password[SHPWLEN+1];
char shi50_ro_password[SHPWLEN+1];
} _share_info_50;
но эта проблема быстро исчезла, т.к. в инете есть все API функции, которых нет по умолчанию в делфи. В моем случае это был RasApi.pas
в твоем это SvrApi.pas,
вот константа которую ну очень тяжело найти, особенно c++ программеру, продаю за 1000$

{$EXTERNALSYM SHPWLEN}
SHPWLEN = 8; // Share password length (bytes)
ЗЫ. проблема с 64К в ричэдите в справке (я имею в виду MSDN и MAPI) явно не описана.. А ошибка/ограничение явно в АПИ, а не в дельфёвых методах.
ЗЫЫ. The NetShareEnum function is obsolete. It is provided only for compatibility with LAN Manager and 16-bit versions of Windows. Win32-based applications should use the WNetEnumResource function.
Зачем пользовать устаревшие функции? Или ты писал для Win 3.1 (именно это подразумевается под 16-bit versions of Windows)
ЗЫЫЫЫ. Дельфёвый MAPI слишком убогий и по-хорошему, если опускаешься до АПИ надо пользовать MSDN.
2)GetPrivateProfileString is obsolete.
Тем не менее если ты сумеешь найти в своем окружении мега-программеров, прогающих под винду, они тебе хором все ответят, чтго более полезной функции микрософтовские программеры не придумывали ни разу.


Попробуй RxRichEdit, мб поможет .. хотя не знаю..
попробуй указать имя компа 1016R
а чем так полезна GetPrivateProfileString?
Халявная парсилка инишек =)
в мсдн-е тебя "по-русски" сказано, чтоб ты хранил все в реестре...

а если очень хочется файл, то гораздо проще юзать xml

а нах их парсить?
в мсдн-е тебя "по-русски" сказано, чтоб ты хранил все в реестре...
а если очень хочется файл, то гораздо проще юзать xml
Ну типа было нужно именно файл. И при помощи этой мега-функции удалось заставить его работать меньше чем за минуту:
TCHAR* ReadCFG(const TCHAR *fileName,
const TCHAR *defaultvalue,
const TCHAR *group,
const TCHAR *name)
{
const int bufsize = 1024;
static TCHAR buf[bufsize];
GetPrivateProfileString (group, name, defaultvalue, buf, bufsize, fileName);
return buf;
}
А потом использовать так, например:
LevelCount = _ttoi(ReadCFG(buffer, TEXT("1" TEXT("GameSettings" TEXT("LevelCount";
Вряд ли я смог бы найти какой-нить парсер хмл и настроить его быстрее.
А еще у виндовой инишки формат проще - человекочитабельней, и генерить различные конфигурации прогой на С гораздо легче чем хмл если использовать.
и с каждой последующей версией IE обновляется..
например:
LevelCount:=S.Values['LevelCount'];
Если так уж важна разделяемость на секции - к вашим услугам TIniFile
Оставить комментарий
yolki
чем лечатся?Есть слухи, что какими-то специальными апишными функциями.