Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Заполнение массивов пользователем


Автор: Алек 29.10.2004, 16:34
Такая ситуация: много массивов, пользователю нужно их изменять. По-началу сделал на каждый элемент массива 2 кнопки (увеличение / уменьшение). В результате кнопки закончились... :stena
Может кто знает как обойтись минимальным колличеством кнопок.

Вот кусок проги с "шапкой "
Uses graph,crt;{у меня в графике}

Var
grDriver : Integer;
grMode : Integer;
ErrCode : Integer;

klaw : char;
{****************************}
Procedure Shapka;
Begin

outtextxy(1+80,GetMaxY-140+10-5, '(+/-) (+/-) (+/-) (+/-) (+/-) (+/-) (+/-) (+/-)');

outtextxy(1,GetMaxY-140+10+10-2,'array1 : array6 :');
outtextxy(1+80,GetMaxY-140+10-2+20, '(t/y) (T/Y) (u/i) (U/I) (a/z) (A/Z) (s/x) (S/X) ');

outtextxy(1,GetMaxY-140+10+30, 'array2 : array7 :');
outtextxy(1+80,GetMaxY-140+10+40-2, '(o/p) (O/P) ([/]) ({/}) (d/c) (D/C) (f/v) (F/V)');

outtextxy(1,GetMaxY-140+10+50, 'array3 : array8 :');
outtextxy(1+80,GetMaxY-140+10+60-2, '(;/'') (:/") (,/.) (</>) (g/b) (G/B) (h/n) (H/N)');

outtextxy(1,GetMaxY-140+10+70, 'array4 : array9 :');
outtextxy(1+80-12,GetMaxY-140+10+80-2, '(`/tab)(~/" ")(ent/baks)(\ |) (j/m) (J/M) (k/l) (K/L)');

outtextxy(1,GetMaxY-140+10+90, 'array5 : array10 :');
outtextxy(1+80-12,GetMaxY-140+10+100-2, ' (+/-) (q/w) (Q/W) (e/r) (E/R)');

End;
{****************************}
Procedure KLAVA;
Begin
IF keypressed Then
Begin

klaw := readkey;
End;
{ Case ord(klaw) Of
{описание всех клавиш, по-честному}
End;{}

End;
{****************************}
BEGIN

grDriver := Detect;
InitGraph(grDriver, grMode,'');
ErrCode := GraphResult;
If ErrCode = grOk then
Begin { Do graphics }
Shapka;
Repeat
klaw := '5';
KLAVA;
Until
klaw = #27;
CloseGraph;
End
Else
Writeln('Graphics error:', GraphErrorMsg(ErrCode));
END.

Автор: Underdark 29.10.2004, 16:50
Напиши процедуру, в параметрах которой есть переменная "строка", и вводи командную строку с клавы, которая будет обрабатываться этой процедурой.
А в командной стороке учти ID массива, увеличение/уменьшение и на какое количество.

З.Ы. Надеюсь, понятно изложился. :)

Автор: Алек 1.11.2004, 18:23
Что такое ID массива? (забыл сказать, пишу на паскале)

Автор: Underdark 3.11.2004, 15:23
Например, у тебя есть массив массивов, что-то типа так:

Код

var
mass: array[1..100] of array[1..5] of integer;


тоды, ID массива mass[1], пусть будет например 1.

Командная строка будет выглядеть примерно так:
Код

 /1      /3              /+              /10
{/ID    /№ элемента   /действие  /на сколько}


Всё это отправляется в процедуру, где строка обрабатывается, все значения извлекаются, переводятся из строкового типа в числовой и подставляются в код...
Результат такой:
Код

mass[1][3]:=mass[1][3]+10;



Пытался как можно понятнее... :)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)