Текущий архив: 2006.04.02;
Скачать: CL | DM;
ВнизТраблы с типами... Найти похожие ветки
← →
Fenix © (2006-03-17 21:01) [0]Доброе время суток. Чтото воизникла проблема с типами...
у меня структура
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. Как мне это обойти?
← →
Гаврила © (2006-03-17 21:51) [1]Можно использовать для присвоения функции серии "StrCopy"А можно заменить
UserAge: array [0..20] of char;
на
UserAge: string[20];
← →
palva © (2006-03-17 21:56) [2]Попробуйте так:
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 22:08) [3]
> 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 23:49) [4]Гаврила © (17.03.06 22:08) [3]
Да, вы правы.
← →
palva © (2006-03-18 16:01) [5]Хотя здесь есть небольшое различие. Функция не будет работать со строками длиной 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.
Не знаю нужно ли это автору.
← →
Fenix © (2006-03-18 16:06) [6]пользуюсь
function StrPLCopy(Dest: PChar; const Source: string; MaxLen: Cardinal): PChar;
все идеально :)
Страницы: 1 вся ветка
Текущий архив: 2006.04.02;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.037 c