Главная страница
    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.084 c
2-1270625230
stovat
2010-04-07 11:27
2010.08.27
Применение формата для Label


15-1270067402
Юрий
2010-04-01 00:30
2010.08.27
С днем рождения ! 1 апреля 2010 четверг


2-1274076522
Ильдарик_13
2010-05-17 10:08
2010.08.27
Фильтрация связанных таблиц


2-1270662405
Vincero
2010-04-07 21:46
2010.08.27
Узнать текущую ширину edit а


15-1270118822
Knight
2010-04-01 14:47
2010.08.27
Сервис и ADO





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