сделал сырую викторину на мидлет паскаль. почему-то программка в эмуляторе работает, а в телефонах не запускается.
у меня 4 вопроса:
1. почему в телефоне не запускается
2. подскажите как сделать чтобы вопросы программка выдавала в случайном порядке и без повторов
3. как сделать чтобы программка сохраняла в хранилище записей последний вопрос после закрытия программы и при следующем запуске выдавала его (это нужно чтобы не отвечать при каждом запуске на первый вопрос)
4. посоветуйте оптимизировать (уменьшить, упростить) ее. я дилетант многого не знаю.
я в тхт файле сделал пока 5 строчек и файл должен заканчиваться на цифру и последняя строчка в тхт файле дб пустой. планирую сделать файл с 1000 строк.
Вот текст ресурсного data.txt файла:
okno|window
dver|door
stena|wall
kniga|book
voda|water
1
вот сама программка:
Код:
program pr;//
var data: resource;//наш ресурс
i,x,y,z,o,fName,fl,fm,fm2,r,q,v: integer;
A: array[0..4] of string;
B,C,E: array[0..30] of string;
t,f,n,d,otv,w,g1,g2,g3,j,l,m: string;
cmd,cmd2: Command;
begin
i:=0;
data:= OpenResource('/data.txt');//открытие ресурса
if (resourceAvailable(data)) then // Если файл существует
begin
repeat
t:=ReadLine(data);
x:=length(t);
if x>1 then
begin
A[i]:=t;
i:=i+1;
end;
repaint;
until x<2;
CloseResource(data);
end;
repeat
begin
y:=random(5);
n:=A[y];
z:=Pos(n,'|');
f:=Copy(n,0,z);
o:=length(n);
d:=Copy(n,z+1,o);
q:=length(d);
fl:=1;
for r:=0 to (q-1) do
begin
C[r]:='*';
end;
repeat
showForm;
cmd:=createCommand('enter',CM_OK,1) ;// Создаем
команду "ввод"
cmd2:=createCommand('exit',CM_STOP ,2);
addCommand(cmd);
addCommand(cmd2);
fName:= formAddTextField(f,'',15,TF_ANY);
fl:=0;
for r:=0 to (q-1) do
begin
B[r]:=Copy(d,fl,fl+1);
fl:=fl+1;
end;
v:=random(q);
C[v]:=B[v];
l:=c[0]+c[1]+c[2]+c[3]+c[4]+c[5]+c[6]+c[7]+c[8]+c[9]+c[10]+c[11]+c[12]+c[13]+c[14]+c[15]+c[16]+c[17]+c[18]+c[19]+c[20];
fm:=formaddstring(l);
while (getClickedCommand <> Cmd) do
delay(100);//Ждем нажатия на кнопку enter
otv:= formGetText(fName); // Помещаем в переменную otv значение, введенное в редактируемое
clearform;
until otv=d;
for r:=0 to (20) do
begin
C[r]:='';
end;
clearform;
end;
until otv='t';
Delay(5000);//задержка
end.