![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Ребята! Помогите Двумерный массив запихать в строку и обратно, из строки в массив. Запихать вродебы как и не проблема а вот вытащить хз как
У кого какие идеи? Код:
for i:=0 to 30 do for j:=0 to 30 do stroka:= stroka+','+massiv[j,i]; |
|
#2
|
||||
|
||||
|
Если матрица квадратная, то не проблема, а вот если нет, то без знания размерности хотя-бы одной из сторон уже не получится.
Для вытаскивания вам надо либо самому парсить строку по запятой, либо воспользоваться классом TStringList который умеет это делать сам. |
|
#3
|
|||
|
|||
|
я бы сделал так:
Код:
var
i, j, x, s: Integer;
t: TStringList;
begin
t:= TStringList.Create;
t.Text:= StringReplace(stroka, ',', #13#10, [rfReplaceAll]);
i:= 0; j:= 0;
s:= Length(massiv[i]) + 1;
for x := 1 to t.Count - 1 do
begin
if x mod s= 0 then
begin
s:= Length(massiv[i]) + 1;
inc(i);
i:= 0;
end;
massiv2[i,j]:= t[x];
inc(j);
end;
t.Free;
end; |
|
#4
|
|||
|
|||
|
Ребят! Спасибо вам конечно за то што откликнулись. С стринг листом это сделать реально, но мне нужно именно String. Я уже неделю бьюся ненаю чё делать. Массив Array[0..30,0..30] of string[1].
|
|
#5
|
||||
|
||||
|
Значит надо парсить. Примерно так будет?
Код:
s := stroka + ',';
i := 0; j := 0;
while Pos(',', s) <> 0
do begin
massiv[i,j] := Copy(s, 1, Pos(',', s)-1);
Delete(s, 1, Pos(',', s));
Inc(i);
if i > 30
then begin
i := 0;
Inc(j);
end;
end; |
|
#6
|
|||
|
|||
|
Спасибо работает. Правдо смещает на одну позицию содержимое массива.
|
|
#7
|
||||
|
||||
|
Это как? Примерчик можно?
|
|
#8
|
|||
|
|||
|
Проблема не в твоём коде. Он безупречен)
Вот: Код:
for i:=0 to 30 do for j:=0 to 30 do stroka:= stroka+','+massiv[j,i]; Исправил так: delete(stroka,1,1); |