Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.30;
Скачать: CL | DM;

Вниз

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

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

Текстовые свойства (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-17 17:18) [1]

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

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


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

>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-18 10:55) [3]

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


 
Slava ©   (2002-09-18 11:24) [4]

> REA (17.09.02 17:18)

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


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

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


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

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


 
Slava ©   (2002-09-18 14:08) [7]

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

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


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

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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2002.09.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
1-98131
Explorer
2002-09-20 10:22
2002.09.30
Перенос проекта из D3 в D6


1-98176
BigFoot123
2002-09-18 09:30
2002.09.30
Winword & Delphi


1-98163
$hade
2002-09-16 12:07
2002.09.30
Delphi 7 Studio!!


14-98277
NetBreaker666
2002-09-02 23:16
2002.09.30
---|Ветка была без названия|---


3-97962
ultrasuper_asd
2002-09-06 23:53
2002.09.30
как реагировать на изменения состояния таблицы