Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Продолжаем приколы (особенности) Delphi 7


Ученик ©   (2002-09-17 16:43:00) 

Текстовые свойства (Caption, Items, Lines, ...) в DFM-файлах
хранятся в Unicode, для программы, скомпилированной в Delphi 6, было неважно какой язык стоит по умолчанию в Язык и стандарты (Regional Settings) - свойства читались нормально (преобразование Unicode в обыкновенную строку было

function CharFromWChar(CharDest: PChar; DestBytes: Integer; const WCharSource: PWideChar; SrcChars: Integer): Integer;
begin
Result := WideCharToMultiByte(0, 0, WCharSource, SrcChars,
CharDest, DestBytes, nil, nil);
end;

в Delphi 7

function CharFromWChar(CharDest: PChar; DestBytes: Integer; const WCharSource: PWideChar; SrcChars: Integer): Integer;
begin
Result := WideCharToMultiByte(DefaultUserCodePage, 0, WCharSource, SrcChars,
CharDest, DestBytes, nil, nil);
end;

в результате при неправильной настройке в Язык и стандарты имеем вопросики во всех текстовых свойствах формы и компонентов

Рекомендация (может быть есть другая)

в System.pas
DefaultUserCodePage := 0;


REA   (2002-09-18 14:28:00) [1]

Не то слово - они глюки друг друга обходят в явном виде.
На некоторых системных платах (и многих притом) под W98 с чипсетом VIA кажется (не помню каким) не работают исключения мат. сопроцессора. (синий экран), а на XP все зашибись.


Johnny Smith   (2002-09-18 14:14:00) [2]

Ошибка действительно проявилась на Win98.
А у меня WinXP, там без проблем

Они что, с Майкрософтом договорились, что ли?


Slava   (2002-09-18 14:08:00) [3]

Ошибка действительно проявилась на Win98.

А у меня WinXP, там без проблем


Ученик   (2002-09-18 13:34:00) [4]

Ошибка на Windows 95/98/возможно ME


REA   (2002-09-18 13:26:00) [5]

У тебя какой Build D7? У меня рушится даже среда при попытке запустить программу (приложение будет зарыто).


Slava   (2002-09-18 11:24:00) [6]

> REA (17.09.02 17:18)

По п.2: странно, у меня ничего нигде не вылетает


REA   (2002-09-18 10:55:00) [7]

Ну и как править то? Все же в BPL лежит уже.


Ученик   (2002-09-17 17:25:00) [8]

>REA (17.09.02 17:18)
2. Да, это тоже надо исправить

{ StdCtrls.pas }

function TCustomComboBoxStrings.Get(Index: Integer): string;
var
Len: Integer;
begin
Len := SendMessage(ComboBox.Handle, CB_GETLBTEXTLEN, Index, 0);
if (Len <> CB_ERR) and (Len > 0)then begin
SetLength(Result, Len);
SendMessage(ComboBox.Handle, CB_GETLBTEXT, Index, Longint(PChar(Result)));
end else
SetLength(Result, 0)
end;


REA   (2002-09-17 17:18:00) [9]

Продолжая приколы:
1) начиная c D6 русские строки как варианты (если в варианте есть хоть одна русская буква) в компоненте сохраняются, но не загружаются (нет функции раскодировки variant multibyte - а он сохраняется как multibyte). По дороге правда там еще какие-то загадочные кодировки фигурируют.

2) В D7 в TComboBox не может быть пустых строк! Программа вылетает по непонятной причине. Сам D7 вылетает при попытке запустить такую программу (на форме комбобокс с двумя значениями одно из них пустое). Никто не знает как лечить?


Наверх

Титульная страница Поиск, карта сайта Написать письмо