Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
5-1128496274
MegaVolt
2005-10-05 11:11
2006.04.02
Множество компонентов в одном контейнере. Как делать?


1-1140966331
DR0N
2006-02-26 18:05
2006.04.02
Как сделать что бы форма меняла размеры проаорционально?


4-1137307147
mao
2006-01-15 09:39
2006.04.02
Необходимо закрыть чужое приложение/процесс


2-1142841491
!*!*!
2006-03-20 10:58
2006.04.02
Потоки (Thread)


2-1142694938
Balex
2006-03-18 18:15
2006.04.02
Странные ошибки при компиляции программы...




   Наверх