Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема со 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
 if
ArrStr[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'


Наверх

Титульная страница Поиск, карта сайта Написать письмо