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