Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Вниз

Delphi7 и .dfm   Найти похожие ветки 

 
NiGGa ©   (2007-10-10 14:34) [0]

Доброго времени суток.

Встал вот такой вопрос: можно ли Д7 научить сохранять в .dfm русский язык именно русским (как в Д5) а не в юникоде?


 
clickmaker ©   (2007-10-10 14:37) [1]

If you want it fixed in the Delphi IDE, open RTL70.BPL
in some hex editor (or via TFileStream), go to offset
$37bdf, you should see a

   $74 $2F (jz ...)

replace it with
   
   $EB $2F (jmp ...)

this will change TWriter.WriteMinStr from

     if LocaleStr <> UTF8Str then

to something equivalent to

   if False then

and restore D5 behaviour in the IDE. Re-edit all the forms
that got corrupted in the IDE (on a machine with original locale).
Proggies using forms can use unmodified RTL70.BPL or not use
packages at all, it will work just fine once the IDE has been
patched and forms fixed.
Not sure about the command-line compiler, maybe some other
file has to be patched.  

 
In Delphi 7 SP1 the bug hasn"t been fixed, but the offset in rtl70.bpl for
the ugly fix is now $38ABF, and you still have to change

   $74 $2F (jz ...)

replace it with
   
   $EB $2F (jmp ...)


 
NiGGa ©   (2007-10-10 14:51) [2]

Спасибо.
А можно поинтересоваться откуда у вас такие познания?


 
Kolan ©   (2007-10-10 14:56) [3]

> А можно поинтересоваться откуда у вас такие познания?

Ты че дальтоник, голубой значет от  обычного отличить не можешь?

ЗЫ
Почти © сами знаете откуда :)


 
clickmaker ©   (2007-10-10 15:04) [4]


> откуда у вас такие познания?

с борландовского quality central, вроде бы


 
NiGGa ©   (2007-10-10 15:16) [5]

Хм, как-то непонятно патч работает.
Т.е. если я смотрю .dfm как текст (собственно дфм сохраняется как текст) то да, действительно русский сохраняется русским.
Если же смотрю как на форму, то часть изменений записалась русским, часть юникодом.


 
NiGGa ©   (2007-10-10 15:17) [6]

>> Ты че дальтоник, голубой значет от  обычного отличить не можешь?

А вы на руки калека? писать нормально разучились?


 
clickmaker ©   (2007-10-10 15:19) [7]


> [5] NiGGa ©   (10.10.07 15:16)

а, забыл сказать.
Он немного недопатчивает... слова без пробелов все равно остаются utf

есть, кстати, еще вариант, но он программный. В dpr, до Initialize, можно вставить такой код:

GetDefaultUserCodePageAddr^ := CP_ACP;

function GetDefaultUserCodePageAddr: PInteger;
type
 TCode = packed record
   CallOpA: Byte;
   OffsetA: Integer;
   CallOpB: Byte;
   OffsetB: Integer;
   MovOp: Byte;
   VarAddr: Pointer;
 end;
 TCodes = packed record
   Code1: TCode;
   JMP: Word;
   Code2: TCode;
 end;
var
 Code: ^TCodes;
 Count: Integer;
 MemInfo: TMemoryBasicInformation;
begin
 Result := nil;
 if (VirtualQuery(TObject,MemInfo,SizeOf(MemInfo))<SizeOf(MemInfo))
   or(MemInfo.State<>MEM_COMMIT) then Exit;
 Code:=MemInfo.BaseAddress;
 Count:=MemInfo.RegionSize;
 while Count>0 do begin
   with Code^ do
     if (Code1.CallOpA=$E8)and(Code1.CallOpB=$E8)and(Code1.MovOp=$A3)
       and(Code2.CallOpA=$E8)and(Code2.CallOpB=$E8)and(Code2.MovOp=$A3)
       and(Code1.OffsetA-Code1.OffsetB=Code2.OffsetA-Code2.OffsetB)
       and(Code1.VarAddr=Code2.VarAddr) then begin
       Result:=Code1.VarAddr;
       Break;
     end;
   Inc(PByte(Code));
 end;
end;


 
NiGGa ©   (2007-10-10 15:21) [8]

Спасибо, испробую программный метод.


 
Правильный Вася   (2007-10-10 16:26) [9]


> Kolan ©   (10.10.07 14:56) [3]
> Ты че дальтоник

и хто жаловался на грубость?
http://delphimaster.net/view/3-1191993601/


 
NiGGa ©   (2007-10-10 18:42) [10]

[7] clickmaker
Прошу прощения, возможно что-то недопонимаю, но с какого момента начинает работать программный метод?
Т.к. оживить его мне не удалось.


 
NiGGa ©   (2007-10-11 08:49) [11]

Собственно написал маленькую тулзу, которая приводит текст .дфм в соответствие Д5) крайне глупым методом замены #xxxx на символ русского/украинского языка.
Но, правильный вариант ответа все равно хочеться узнать.



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

Форум: "Прочее";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.038 c
8-1169127491
namor
2007-01-18 16:38
2007.11.11
Музыка в Делфи


6-1173173691
inex
2007-03-06 12:34
2007.11.11
простенький сканер сети


3-1183576692
lavrenty
2007-07-04 23:18
2007.11.11
Не срабатывает Refresh


6-1173453698
Empleado
2007-03-09 18:21
2007.11.11
Мой первый application hangs (Indy)


2-1192716272
AntonS
2007-10-18 18:04
2007.11.11
Уничтожить класс в другой форме.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский