Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.063 c
2-1142486225
serg11111111
2006-03-16 08:17
2006.04.02
Как определить текущую директоию


15-1142323371
vajo
2006-03-14 11:02
2006.04.02
Затопили соседи


2-1142597681
nyron
2006-03-17 15:14
2006.04.02
помогите плиз с excel


15-1141842853
MaSZ
2006-03-08 21:34
2006.04.02
-->listbox удаляет строки через одну, почему????<--


3-1139178894
GL00m
2006-02-06 01:34
2006.04.02
Подключить бы БД Access в рантайме в User DSN...