![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема со string и integer - помогите новичку [D7, XP]
Bug12 © (2006-09-22 14:43:00)В Memo несколько строк вида:
12 23
32 43
53 76
42 63
63 23
Т.е. в каждой строке - два каких-либо числа. Мне надо внести каждое это число в различные "колонки" двумерного массива, т.е. в Array[1,1] должно быть 12, в Array[1,3] должно быть 53, в Array[2,5] - 23, ну и так далее.
Делаю так:
for i:=0 to Memo1.Lines.Count do
begin
str := GetWord(Memo1.Lines[i], '', 1);
s1 := StrToInt(str);
str := GetWord(Memo1.Lines[i], '', 2);
s2 := StrToInt(str);
ArrStr[1,i] := s1;
ArrStr[2,i] := s2;
end;
</CDOE>
Функция GetWord (не моя), берущая определенное слово из строки:
function GetWord(Str, Smb: string; WordNmbr: Byte): string;
var
SWord: string;
StrLen, N: Byte;
begin
StrLen := SizeOf(Str);
N := 1;
while ((WordNmbr >= N) and (StrLen <> 0)) do
begin
StrLen := Pos(Smb, str);
if StrLen <> 0 then
begin
SWord := Copy(Str, 1, StrLen - 1);
Delete(Str, 1, StrLen);
Inc(N);
end
else
SWord := Str;
end;
if WordNmbr <= N then
Result := SWord
else
Result := '';
end;
</CDOE>
При вызове процедуры добавления почему-то вылетает ошибка "12 23 is not valid integer value", хотя строку в integer я конвертировал.
Помогите новичку, пожалуйста!
DevilDevil (2006-09-25 17:32:00) [1]Не совсем вопрос понял, если честно, но...
допустим у тебя массив из пяти элементов: ArrStr: array[0..4] ofinteger;
Находишь индексы так:
var
MinInd, MaxInd : integer;
begin
MinInd := 0;
MaxInd := 0;
fori := 0 to4 do
begin
ifArrStr[i] > ArrStr[MaxInd] thenMaxInd := i;
ifArrStr[i] < ArrStr[MinInd] thenMinInd := i;
end;
IceBeerg (2006-09-22 18:20:00) [2]Bug12 (22.09.06 18:00) [9]
Никто. Циклами сравнивая первый элемен каждого столбца с полседующим и при каждом меньшем отлавливание номера элемента, как пройдеш весть столбец получиш номер наименьшего элемента. Думай. Ко не сложный но муторный писать за тебя его никто не станет.
Bug12 (2006-09-22 18:00:00) [3]Неужели никто не ответит?
Bug12 (2006-09-22 15:58:00) [4]Т.е. в каждой "колонке" - до пяти элементов
Bug12 (2006-09-22 15:57:00) [5]
ArrStr: array[0..4, 0..4] of integer;
Сергей М. (2006-09-22 15:52:00) [6]
> Bug12 (22.09.06 15:49) [5]
Смотря как ты объявил свой многомерный массив ..
Bug12 (2006-09-22 15:49:00) [7]Еще один вопрос - как узнать номер минимального или максимального элемента в каждой из "колонок" моего многомерного массива?
Bug12 (2006-09-22 15:23:00) [8]Спасибо вам огромное - помогло!
DevilDevil (2006-09-22 15:14:00) [9]ArrStr : array[1..2, 0..MAX_BUF_SIZE] of integer;
DevilDevil (2006-09-22 15:12:00) [10]В
GetWordне вникаю, но попробуй так:
for i:=0 to Memo1.Lines.Count-1 do // for i := 0 to Count -1
begin
str := GetWord(Memo1.Lines[i], #32, 1); // #32 - пробел = ' ' <> '' !!!
s1 := StrToInt(str);
str := GetWord(Memo1.Lines[i], #32, 2);
s2 := StrToInt(str);
ArrStr[1,i] := s1;
ArrStr[2,i] := s2;
end;
stone (2006-09-22 14:45:00) [11]
> При вызове процедуры добавления почему-то вылетает ошибка
> "12 23 is not valid integer value", хотя строку в integer
> я конвертировал.
'12 23 ' <> '1223'