Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.065 c
2-1271183717
dixa
2010-04-13 22:35
2010.08.27
подстановка значения в созданный тип


2-1271243860
kiligin
2010-04-14 15:17
2010.08.27
Работа с TListView


15-1263936627
Юрий
2010-01-20 00:30
2010.08.27
С днем рождения ! 20 января 2010 среда


15-1270289462
Урсулапов_
2010-04-03 14:11
2010.08.27
Symantec и Mail.ru агент


15-1268991257
Дмитрий С
2010-03-19 12:34
2010.08.27
На чем писать для Windows Mobile 6.5?





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