Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (все версии) - часть 4

Автор: z3r
Дата сообщения: 14.02.2009 10:20
Дельфикингдом прочесываю...а что за торри?
Автор: shulum
Дата сообщения: 14.02.2009 14:05
z3r
____://torry.net/
Автор: Erazer
Дата сообщения: 14.02.2009 23:39
Помогите разобраться плз..
var
Reg: TRegistry;
Res:string;
buf: array of byte;
i,bufSize:integer;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := Key;
if Reg.OpenKey(SubKey, True) then
begin
// Определить размер
bufSize:=Reg.GetDataSize(Param);
// Установить размер динамического массива
SetLength(buf,bufSize);
Reg.ReadBinaryData(Param, buf,bufSize);
Showmessage((IntToHex(buf[0],2)));
finally
Reg.CloseKey;
Reg.Free;
end;
end;


на Showmessage получаю Acsess violation.
Если же использую статический массив то все работает.

var
Reg: TRegistry;
Res:string;
buf: array [0..15]of byte;
i,bufSize:integer;
begin

Reg := TRegistry.Create;
try
Reg.RootKey := Key;
if Reg.OpenKey(SubKey, True) then
begin
// Определить размер
bufSize:=sizeof(buf);
Reg.ReadBinaryData(Param, buf,bufSize);
Showmessage((IntToHex(buf[0],2)));
end;
finally
Reg.CloseKey;
Reg.Free;
end;

Добавлено:
спасибо за внимание. достаточно было сделать так: Reg.ReadBinaryData(Param, buf[0], bufSize)
Автор: Frodo_Torbins
Дата сообщения: 15.02.2009 09:28
Erazer
Попробуйте так:
Код: Reg.ReadBinaryData(Param, buf[0],bufSize);
Автор: delover
Дата сообщения: 15.02.2009 12:43
Frodo_Torbins
Да это понятно, если моя прога работает с UnicodeString, то систему никто ещё не отменял. Я знаю функции MessageBoxA и MessageBoxW. Но функцию MessageBoxU я не видывал. Есть ли смысл заморачиваться с переводом такой проги, которая уже конвертит юникод в анси, так вот есть ли смысл переводить её на WideString при обращении к системе?
Автор: Frodo_Torbins
Дата сообщения: 15.02.2009 15:12
delover
WideString остается только для работы с COM, во всех остальных случаях его заменяет UnicodeString. Например:
Код: MessageBoxW(0, PChar(Form1.Caption), 'Message:', MB_OK);
Автор: DmitryKz
Дата сообщения: 15.02.2009 15:33
Ребята, посоветуйте наиболее актуальные и прогрессивные на данный момент способы локализации приложений с использованием Delphi 7. А также рекомендуемые компоненты.
Автор: delover
Дата сообщения: 15.02.2009 23:09
Frodo_Torbins
Тут Вы меня сильно просветили, и я бы сказал озадачили... Мне уже видно свои брёвна. Я ещё по CPU не успел полазить. У меня что-то Shell интерфейсы к ярлыкам стали с ошибками работать, так я и не подозревал что где-то юникод просмотрел.
Автор: InSe0F
Дата сообщения: 15.02.2009 23:39
Всем салют. не знаю туда ли пишу но вопрос такой
поставил CodeGear.Rad.Studio. 2009
но вот проблема, не сохраняется скомпилированный файл проекта, вообще никакого, кроме демо
пишет warring - установлен параметр -J
где можно это убрать? или проблема в кряке...
Автор: Frodo_Torbins
Дата сообщения: 16.02.2009 11:29
delover
Очень рекомендую: Delphi2009 Handbook
InSe0F
Пожалуй лучше сюда: Embarcadero (CodeGear) RAD Studio 2009.
Автор: GrHnd
Дата сообщения: 16.02.2009 12:14
InSe0F
С таким вопросом скорее всего сюда.
Автор: bandyn
Дата сообщения: 16.02.2009 12:21
Ставлю на Delphi 2009 компонент VKDBF108 ругается на эти строки которые стоят в цикле:
[DCC Error] VKDBFGostCrypt.pas(490): E2064 Left side cannot be assigned to

1. Byte(c[i]) := Byte(c[i]) xor pGostNB(@Gamma0)[j];

2. Byte(pChar(p1)[i]) := Byte(pChar(p1)[i]) xor Byte(pChar(p2)[i]);

Слышал чегото в Delphi 2009 поубирали, на что можно заменить?
Автор: GrHnd
Дата сообщения: 16.02.2009 12:26
bandyn
Byte(pChar(p1)[i]) := Byte(pChar(p1)[i]) xor Byte(pChar(p2)[i]); возможно надо заменить на
Byte(pAnsiChar(p1)[i]) := Byte(pAnsiChar(p1)[i]) xor Byte(pAnsiChar(p2)[i]);
а по поводу 1. Byte(c[i]) := Byte(c[i]) xor pGostNB(@Gamma0)[j];
заменить описание переменной с (например c : String; на c : AnsiString;)
Автор: Frodo_Torbins
Дата сообщения: 16.02.2009 19:17
bandyn
pChar можо еще заменить на pByte.
Автор: delover
Дата сообщения: 16.02.2009 19:45
Frodo_Torbins
Спасибо, я так и понял. Видел статью Марко месяца три назад на квелити. Он писал, что надо писать

Код:
type
TUnicodeString = string;
Автор: InSe0F
Дата сообщения: 16.02.2009 20:29
А есть какая либо возможность изменить настройки компилятра
или как отключить ключик -J

илл по советуйте где почитать об этом
мне кажется тут не активация виновата
Автор: delover
Дата сообщения: 17.02.2009 07:09
InSe0F
Я думаю, что это бага, а фикс уже имеется. На сколько я помню там была проблемма с ненахождением существующих dcu, даже если прописаны пути. Потом это исправили. Я тестил 2009, проект сохранялся.
Автор: InSe0F
Дата сообщения: 17.02.2009 20:15
delover
я ставил самый последний апдейт (

хорошо что нашел как 7ую делфю запустить на висте,
завтра попробую тестануть 2007ую
Автор: DmitryKz
Дата сообщения: 17.02.2009 23:35
Ребята, такая проблема: локализую свое приложение и возникли два момента:
Использую Tnt Unicode Components (еще не tms-овкий вариант, посколько он один работает с SpTBXLib. Есть русскоговорящий пользователь, живущий в штатах, соответственно винда у него с английскими региональными настройкаи и анлийский же для неюникодных программ. После перевода всех сообщений в программе на Юникод, в интерфейсе остаются вопросительные знаки вместо русских символов в заголовках окон, а также кантролах, использующих стандартные экшены (например, упорядочить окна каскадом, по горизонтали и т. п.), хотя сам экшнлист от Tnt. Существует ли способ решить эту проблему: чтобы смогли отображаться русские буквы в заголовках окон и в экшенах в английской винде с английскими же региональными настройками? По первому вопросу я ответа совершенно не знаю, по второму догадываюсь, что может упорядочивать окна какими-то апишными функциями? Но я не знаю, какими, да и поможет ли это в смысле решения проблемы, тоже не догадываюсь.
Я, конечно, понимаю, что оптимальное решение сделать еще английскую локализацию в своей программе - я этим и занимаюсь, но с заголовками все не просто - у меня в них отображаются названия документов, а они русские.

Да, пока не забыл существует ли альтернатива связке SpTBXLib+TntUnicode?
Автор: ShIvADeSt
Дата сообщения: 18.02.2009 01:07
DmitryKz

Цитата:
Существует ли способ решить эту проблему: чтобы смогли отображаться русские буквы в заголовках окон и в экшенах в английской винде с английскими же региональными настройками?

Копайте в сторону Language And Settings закладка Advanced (на его англ винде). Там выставите Russian - тогда менюшки будут на русском языке (проверено 100%).
Автор: DmitryKz
Дата сообщения: 18.02.2009 01:56
ShIvADeSt
Да я предложил ему это как временное решение, но ведь это не выход, менять формат всех величин, он же в Штатах живет.
Автор: delover
Дата сообщения: 18.02.2009 06:39
InSe0F
У меня 2009 без абдейтов, только багофиксы. Вообще на абдейты ориентироваться - это не особенно хороший стиль.
Автор: JbBaD
Дата сообщения: 18.02.2009 07:17
Подскажите как переделать ComboBoxEx в уникодный (widestring вместо string в caption итемов)?
Автор: Mandor Sawall
Дата сообщения: 18.02.2009 08:04
DmitryKz
А вы уверен, что у вас все контроли и переменные unicode-вские? По моему регионалные настройки никак не влияют на полную unicode-программу.
Кстати, не сказали какая ОС у ваш друг.
Автор: ShIvADeSt
Дата сообщения: 18.02.2009 09:22
DmitryKz

Цитата:
Да я предложил ему это как временное решение, но ведь это не выход, менять формат всех величин, он же в Штатах живет.

А каким образом язык для неюникодовских программ влияет на региональные настройки? Еще раз говорю, на закладке Advanced - там еще текст идет non-unicode. Вот там выставить Russian.
Автор: DmitryKz
Дата сообщения: 18.02.2009 11:25
ShIvADeSt
Я не спорю, что это решение действует. Просто судя по имени и фамилии он не русский, а вроде какой-то словак и не исключено, что там у него даже не английский язык стоит и не русский. Кроме того, при этом варианте вместо кракозябров в менюшках знаки вопроса. А они убираются только изменением региональных вопросов. Но, возможно, в этом я сам напортачил, не указав для них RUSSIAN_CHARSET. Но, возможно, я тут и ни при чем, так как надпись в заголовках окон, без региональных изменений на русский, отображаются знаками вопроса. Это те, которые я сделал в дизайнтайме; для дочерних окон, отображающих документы, и заголовки которых назначаются в рантайме, эти заголовки отображаются корректно.
Вчера уже поздно ночью нашел в Королевстве вопрос 36984, пока не изучал, может это решение.


Добавлено:
Это решение помогает только частично. Только если язык неюникодных программ установлен в русский, в противном случае, все надписи в заголовках окон, сделанные в дизайнтайме превращаются в знаки вопроса, а сделанные в рантайме - в кракозябры.
Подскажите, существует ли способ перекрыть отображение заголовка окна своим кодом, чтобы выводить в них юникодный текст?
Или как использовать Tnt, чтобы и заголовки окон были юникодными, если, конечно, в нем это возможно?
Автор: anfilat
Дата сообщения: 18.02.2009 16:52
DmitryKz

Цитата:
Или как использовать Tnt, чтобы и заголовки окон были юникодными, если, конечно, в нем это возможно?

Заменяешь объявление формы с
TMyDlg = class(TForm)
на
TMyDlg = class(TTntForm)
и всех дел!
Автор: DmitryKz
Дата сообщения: 19.02.2009 00:09
anfilat
Спасибо
Автор: ShIvADeSt
Дата сообщения: 19.02.2009 01:33
DmitryKz

Цитата:
Подскажите, существует ли способ перекрыть отображение заголовка окна своим кодом

Перехватывать WM_NCPAINT и рисовать свой заголовок (таким образом работают компоненты по градиентной заливке и вывода текста в заголовок разными шрифтами).
Автор: DogmAPT
Дата сообщения: 19.02.2009 11:09
Плиз, скинте ссылку на русификатор Delphi 2007!!!!!!!!!!

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Глобальные переменные в разных формах с++ builder 'a.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.