![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
string && array of Char [D6]
wooow1 © (2006-12-26 09:30:00)Есть такая переменная a: array[0..19] of Char; Которую я заполняю данными:
StrLCopy(a, PChar(Edit1.Text), 18);
А потом в другом месте делаю например так: ShowMessageFmt('test %s', [a]);
В результате при выводе, получаю в конце строки дополнительный символ. т.е. если заполнен весь массив до конца, то выводится приблизительно так: "123456789012345678?" -- последний символ выводится в виде квадратика. Ничего я не придумал, кроме сделать так: ShowMessageFmt('test %s', [String(a)]); Но почему так присходит и как корректно надо сделать это?
evvcom (2006-12-26 10:21:00) [1]> [3] wooow1 (26.12.06 10:09)
> String(a), это работает, но я не знаю корректно ли.
корректно
wooow1 (2006-12-26 10:09:00) [2]Нет, я копирую все символы, это просто пример, поэтому ошибся там везде одно и тоже, т.е. 20 символов.
И на самом деле вот так использую StrLCopy:
StrLCopy(a, PChar(__StringFunc(Edit1.Text)), 20);
...
function __StringFunc(Input: string): string;
...
Ну мне понятно, что PChar заканчивается #0, но как его превратить в стринговую переменную, т.е. без последненго "нуля"? Я сделал так, String(a), это работает, но я не знаю корректно ли.
evvcom (2006-12-26 09:59:00) [3]> [0] wooow1 (26.12.06 09:30)
> array[0..19] of Char
20 символов
> StrLCopy(a, PChar(Edit1.Text), 18);
Копируешь только 18
a по сути PChar получается, который должен заканчиваться символом #0
Elen (2006-12-26 09:52:00) [4]
> wooow1
А почему не, типа, так? :
var p:pchar;
begin
p:=pchar(Edit1.text);
ShowMessageFmt('test %s',[p]);
end;