Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.15;
Скачать: CL | DM;

Вниз

Проблема со string и integer - помогите новичку   Найти похожие ветки 

 
Bug12   (2006-09-22 14:43) [0]

В 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 я конвертировал.

Помогите новичку, пожалуйста!


 
stone ©   (2006-09-22 14:45) [1]


> При вызове процедуры добавления почему-то вылетает ошибка
> "12 23 is not valid integer value", хотя строку в integer
> я конвертировал.

"12 23 " <> "1223"


 
DevilDevil ©   (2006-09-22 15:12) [2]

В 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;


 
DevilDevil ©   (2006-09-22 15:14) [3]

ArrStr : array[1..2, 0..MAX_BUF_SIZE] of integer;


 
Bug12   (2006-09-22 15:23) [4]

Спасибо вам огромное - помогло!


 
Bug12   (2006-09-22 15:49) [5]

Еще один вопрос - как узнать номер минимального или максимального элемента в каждой из "колонок" моего многомерного массива?


 
Сергей М. ©   (2006-09-22 15:52) [6]


> Bug12   (22.09.06 15:49) [5]


Смотря как ты объявил свой многомерный массив ..


 
Bug12   (2006-09-22 15:57) [7]


ArrStr: array[0..4, 0..4] of integer;


 
Bug12   (2006-09-22 15:58) [8]

Т.е. в каждой "колонке" - до пяти элементов


 
Bug12   (2006-09-22 18:00) [9]

Неужели никто не ответит?


 
IceBeerg ©   (2006-09-22 18:20) [10]

Bug12   (22.09.06 18:00) [9]
Никто. Циклами сравнивая первый элемен каждого столбца с полседующим и при каждом меньшем отлавливание номера элемента, как пройдеш весть столбец получиш номер наименьшего элемента. Думай. Ко не сложный но муторный писать за тебя его никто не станет.


 
DevilDevil ©   (2006-09-25 17:32) [11]

Не совсем вопрос понял, если честно, но...

допустим у тебя массив из пяти элементов: ArrStr: array[0..4] of integer;

Находишь индексы так:
var
 MinInd, MaxInd : integer;
begin

MinInd := 0;
MaxInd := 0;

for i := 0 to 4 do
begin
 if
ArrStr[i] > ArrStr[MaxInd] then MaxInd := i;

 if ArrStr[i] < ArrStr[MinInd] then MinInd := i;
end;



Страницы: 1 вся ветка

Текущий архив: 2006.10.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.036 c
2-1159183346
vitv
2006-09-25 15:22
2006.10.15
FIBPlus


2-1159512168
vodvorezlaya
2006-09-29 10:42
2006.10.15
Как изменить размер обьектов на форме во время работы программы


10-1124372214
Сергей (аноним)
2005-08-18 17:36
2006.10.15
Свой OLE-объект в Word е


2-1159194607
Ega23
2006-09-25 18:30
2006.10.15
Parent PopupMenu "автоматом" - возможено?


15-1158853641
hamster
2006-09-21 19:47
2006.10.15
Где винт???