![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Добрый день всем...
Есть проблема чтения числового одномерного массива из компоненты Edit.. Числа вводятся через пробел, нужно их внести в массив для дальнейшей обработки(сортировки) Всем спасибо |
|
#2
|
||||
|
||||
|
тебе надо бежать по пробелам и копировать значения между ними
Код:
function FillArrayFromString(Text:String;Buff:array of Integer):Boolean;
var _pos:Word;
_text:String;
index:word;
BuffPos:Integer;
begin
Result:=False;
_text:=text;
BuffPos:=0;
If _Text[Length(_Text)]<>' ' Then _Text:=_Text+' ';
For Index:=0 To Length(_text) Do
Begin
If _text[Index]<>' ' Then Continue;
Try
Buff[BuffPos]:=StrToInt(Copy(_text,1,Index));
Delete(_text,1,index);
Exscept
Result:=False;
Exit;
End;
Inc(BuffPos);
End;
end; |
|
#3
|
|||
|
|||
|
Все сделал как написано...но при использовании этой функции возникает шибка. Например после ввода
12 4 5 6 EConvertMessage with error "12'is not valid integer value'. |
|
#4
|
||||
|
||||
|
Код:
function FillArrayFromString(Text:String;Buff:array of Integer):Boolean;
var _pos:Word;
_text:String;
index:word;
BuffPos:Integer;
begin
Result:=False;
_text:=text;
BuffPos:=0;
If _Text[Length(_Text)]<>' ' Then _Text:=_Text+' ';
Index:=0;
While Index<Length(_text) Do
Begin
Inc(Index);
If _text[Index]<>' ' Then Continue;
Try
Buff[BuffPos]:=StrToInt(Copy(_text,1,Index-1));
Delete(_text,1,index);
Index:=0;
Except
Result:=False;
Exit;
End;
Inc(BuffPos);
End;
end; |
|
#5
|
|||
|
|||
|
Код:
function StrToMas(const Source: String; var Buf: array of Integer): Boolean;
var
i, iPos: Integer;
Dest: String;
begin
Result := False;
Dest := Trim(Source) + ' ';
iPos := Pos(' ', Dest);
i := Low(Buf);
while iPos <> 0 do
begin
if not TryStrToInt(Trim(Copy(Dest, 1, iPos-1)), Buf[i]) then
Exit;
Delete(Dest, 1, iPos);
iPos := Pos(' ', Dest);
Inc(i);
end;
Result := True;
end; |