![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Траблы с типами...
Fenix © (2006-03-17 21:01:00)Доброе время суток. Чтото воизникла проблема с типами...
у меня структура
TUserInfo=record
UserAge:array [0..20] of char;
.......
end;
.....
Var
a:array of TUserInfo;
когда добавляю так:
a[i].UserAge:='25';
то все нормально.
а когда пытаюсь так:
a[i].UserAge:=edit1.text;
пишет ошибку: несовпадение типа Array и TCaption. Как мне это обойти?
Fenix (2006-03-18 16:06:00) [1]пользуюсь
function StrPLCopy(Dest: PChar; const Source: string; MaxLen: Cardinal): PChar;
все идеально :)
palva (2006-03-18 16:01:00) [2]Хотя здесь есть небольшое различие. Функция не будет работать со строками длиной 21, а мой код будет:
{$APPTYPE CONSOLE}
uses SysUtils;
var
a: array [0..20] of Char;
s: String;
begin
s := '123456789012345678901';
StrPLCopy(a, s, High(a));
WriteLn(a); // 12345678901234567890
a[20] := '1';
WriteLn(a); // 123456789012345678901
end.
Не знаю нужно ли это автору.
palva (2006-03-17 23:49:00) [3]Гаврила © (17.03.06 22:08) [3]
Да, вы правы.
Гаврила (2006-03-17 22:08:00) [4]
> palva ©
Для этого и есть функция
function StrPLCopy(Dest: PChar; const Source: string; MaxLen: Cardinal): PChar;
Description
StrPLCopy copies up to a maximum of MaxLen characters from Source into the null-terminated string Dest. StrPLCopy returns a pointer to Dest.
--
То есть вызов такой:
StrPLCopy(a[i].UserAge, edit1.text, High(a[i].UserAge));
palva (2006-03-17 21:56:00) [5]Попробуйте так:
for k := 0 to 20 do begin
if k >= Length(Edit1.Text) then begin
a[i].UserAge[k] := Char(0);
break;
end;
a[i].UserAge[k] := Edit1.Text[k+1]
end;
Гаврила (2006-03-17 21:51:00) [6]Можно использовать для присвоения функции серии "StrCopy"А можно заменить
UserAge: array [0..20] of char;
на
UserAge: string[20];