Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизString -> WideChar Найти похожие ветки
← →
Б (2010-04-04 01:22) [0]Здрасти!
Как присвоить A S, без использования StrPCopy?
Т.е. Дельфийским приведением типов.
Var
S: string;
A: array[0..15] of WideChar;
← →
Германн © (2010-04-04 01:52) [1]А разве StrPCopy в Д7 умеет такое?
← →
Б (2010-04-04 02:00) [2]Поправочка: не WideChar, а AnsiChar.
← →
DVM © (2010-04-04 02:04) [3]
> Б (04.04.10 01:22)
А MOVE() не спасет отца русской демократии?
← →
Б (2010-04-04 02:11) [4]
> DVM © (04.04.10 02:04) [3]
Чёта нет.
Var
FontI: TLogFont;
begin
ZeroMemory(@FontI, SizeOf(FontI));
With FontI do
begin
. . . . .
Move(Name, lfFaceName, 32);
// StrPCopy(lfFaceName, Name);
end;
← →
Германн © (2010-04-04 02:27) [5]
> Б (04.04.10 02:11) [4]
>
>
> > DVM © (04.04.10 02:04) [3]
>
>
> Чёта нет.
>
>
> Var
> FontI: TLogFont;
> begin
> ZeroMemory(@FontI, SizeOf(FontI));
> With FontI do
> begin
> . . . . .
>
> Move(Name, lfFaceName, 32);
> // StrPCopy(lfFaceName, Name);
> end;
И где тут "Дельфийским приведением типов"?
← →
Б (2010-04-04 02:29) [6]
> Германн © (04.04.10 02:27) [5]
Хм. Это я и спрашиваю.
← →
Германн © (2010-04-04 02:38) [7]
> Б (04.04.10 02:29) [6]
>
>
> > Германн © (04.04.10 02:27) [5]
>
>
> Хм. Это я и спрашиваю.
>
Что это?
Разницу между Move и StrPCopy?
Тогда тебе лучше переформулировать сабж
← →
Б (2010-04-04 02:50) [8]
> Германн © (04.04.10 02:38) [7]
Ладно.
Как всё это сделать без StrPCopy?
← →
Германн © (2010-04-04 03:15) [9]
> Б (04.04.10 02:50) [8]
>
>
> > Германн © (04.04.10 02:38) [7]
>
>
> Ладно.
> Как всё это сделать без StrPCopy?
>
А что всё? Вопрос то где?
Если в теме не фигурирует Wide, то какие проблемы?
← →
Б (2010-04-04 09:01) [10]
> Германн © (04.04.10 03:15) [9]
Если воспользоваться Move вместо StrPCopy, то
шрифт создаётся не корректно.
← →
Palladin © (2010-04-04 09:11) [11]
> Move(Name, lfFaceName, 32);
Почему 32? Почему не Length(Name)? Ты на 100% уверен что длинны Name - 32 символа? Если меньше, то в lfFaceName, мувнется весь мусор который лежит за пределами Name.
← →
Б (2010-04-04 09:14) [12]
> Palladin © (04.04.10 09:11) [11]
Потому что:
Const
LF_FACESIZE = 32;
lfFaceName: array[0..LF_FACESIZE - 1] of AnsiChar;
Даже если заменить на Length(Name), результат тот же.
← →
Palladin © (2010-04-04 09:31) [13]
> Б (04.04.10 09:14) [12]
Я тебе ЕЩЕ РАЗ ГОВОРЮ. Name - строка содержащая некое количество символов и мувить из нее 32 символа лишь потому чтоConst
LF_FACESIZE = 32;
lfFaceName: array[0..LF_FACESIZE - 1] of AnsiChar;
это бред сивой кобылы.
Во вторых и не менее главных. Move принимает два параметра, откуда и куда. В "Откуда" ты указал идентификатор Name, и таким образом запихнул в lfFaceName ЗНАЧЕНИЕ идентификатора Name, то есть значение указателя. Да еще и 28 байтов лежащих после него. Твой ник мне знаком, ты тут не первый день, и не говори что ты не знал что при Name: String, Name будет указателем на строку, а не самой строкой.
← →
Б (2010-04-04 09:57) [14]> Palladin © (04.04.10 09:31) [13]
Тимур, ны ары. :)
> и не говори что ты не знал что при Name: String, Name будет
> указателем на строку, а не самой строкой.
Если б я знал, то давно сидел в "Прочее". ;)
И что передавать 4, как размер Pointer?
← →
Palladin © (2010-04-04 09:59) [15]Надо передавать реальные данные
Move(Name[1], lfFaceName, Length(Name));
← →
Б (2010-04-04 10:09) [16]О! Благодарю. ;)
Ну теперь я всё понял. Спасибо.
← →
Anatoly Podgoretsky © (2010-04-04 11:32) [17]Дельфи поддерживает прямое присваиваение, нет нужды использовать такие опасные операции.
← →
Palladin © (2010-04-04 12:00) [18]
> Anatoly Podgoretsky © (04.04.10 11:32) [17]
Ну присвой строковую переменную массиву. А мы все посмотрим как долго ты будешь пытаться откомпилировать это присвоение. И где углядел ты здесь опасность, кстати говоря?
← →
Leonid Troyanovsky © (2010-04-04 12:47) [19]
> Palladin © (04.04.10 12:00) [18]
> И где углядел ты здесь опасность, кстати говоря?
Надо длину контролировать:
if (Length(Name) < LF_FACESIZE) then
--
Regards, LVT.
← →
Anatoly Podgoretsky © (2010-04-04 13:27) [20]S := PChar(A)
Обычная стандартная и любимая - buffer overflow - unmanaged тип
← →
Харакири (2010-04-04 13:35) [21]С какой целью вообще это присвоение выполняется? Задача какая?
← →
Leonid Troyanovsky © (2010-04-04 13:56) [22]
> Харакири (04.04.10 13:35) [21]
> С какой целью вообще это присвоение выполняется?
Видимо, заполняется The LOGFONT structure.
--
Regards, LVT.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.063 c