PDA

Просмотр полной версии : Переменная и ее чтение с заменой значений(вопрос)


xxx00xxx
18.09.2015, 03:43
Суть такова

есть 2 значения

var
i:integer;
b:integer;

i:=1;
b:=1;


begin
buf:=#$XX;
WriteS('текст if i=100 +inttostr(b))тут продолжения текста'+inttostr(i))
SendToServer;
inc(i);
inc(b);

суть такова нужно что бы значение b в середине текста прибавлялось на +1 и каждое сотое значение i которое в конце строки текста сбрасывалось снова на 1.

пример
текст1текст1,2,3,4,5,..
текст1текст100
текст2текст1...

И возможно ли это ?

не могу собразить как это реализировать . Как правильно создать эти переменные и как считать это значение .

ScythLab
18.09.2015, 16:43
Я раз 5 перечитал код и текст, мозг сломан, но понимания нет :)

xxx00xxx
18.09.2015, 17:10
var
i,b,c:integer;
Stream:TFileStream;
procedure Init; //Вызывается при включении скрипта
begin;
i:=1;
b:=1;
try //пытаемся создать файл, но если такой существует то открываем его
Stream := TFileStream.Create('d:\id2.txt', fmOpenReadWrite);
except
Stream := TFileStream.Create('d:\id2.txt', fmCreate);
end;
end;
procedure Free; //Вызывается при выключении скрипта
begin
Stream.free;
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromClient and (pck[1]=#$56) then
begin
pck:='';
buf:=#$23;
end;
begin
c:=ReadD(i);
if ((ReadD(i)<100)) then begin
b:=b+1;
end;
WriteS('menu_select?ask='+inttostr(b)+'&reply='+inttostr(i));
SendToServer;
inc(i);
inc(b);
end;
if FromServer and (pck[1]=#$D0) then
Stream.Write(inttostr(Readd(2))+' ',10);
end.

вот сам скрипт . Смысл скрипта - Перменная B не меняется , пока переменная I не достигнет значения 100 выше 100. как Переменная i достигает значения выше 100. Меняется число переменной б +1. И еще задача что бы переменная I сбросилась на 0, после как переменная B прибавит к себе +1.
как не пытаюсь все это провернуть , получаю какието рандом значения .

ScythLab
18.09.2015, 17:31
До конца в сакральный смыл вникать нет желания, но задачу можно решить кучей способов, выбери подходящий для себя и доработай.

if (i = 100) then
begin
Inc(b);
i := 0;
end;
Write(...)



if (i = 100) then
Inc(b);
Write(...);
if (i = 100) then
i := 0;



WriteS('menu_select?ask='+IntTosTr(i div 100)+'&reply='+IntTosTr(i mod 100));

xxx00xxx
18.09.2015, 18:18
var
i,b,c:integer;
Stream:TFileStream;
procedure Init; //Вызывается при включении скрипта
begin;
i:=1;
b:=1;
try //пытаемся создать файл, но если такой существует то открываем его
Stream := TFileStream.Create('d:\id2.txt', fmOpenReadWrite);
except
Stream := TFileStream.Create('d:\id2.txt', fmCreate);
end;
end;
procedure Free; //Вызывается при выключении скрипта
begin
Stream.free;
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromClient and (pck[1]=#$56) then
begin
pck:='';
buf:=#$23;
end;
begin
if (i > 100) then
Inc(b);
end;
WriteS('menu_select?ask='+IntTosTr(b)+'&reply='+IntTosTr(i));
SendToServer;
inc(i);
begin
if (i > 100) then
i:=1;
end;
if FromServer and (pck[1]=#$D0) then
Stream.Write(inttostr(Readd(2))+' ',10);
end.


в итоге всеравно не работает имею вот такой косяк
0002 s Command: menu_select?ask=1&reply=97
0002 s Command: menu_select?ask=1&reply=29

это пакеты идут по порядку , но прибавке к +1 нету , также и значения идут не 1,2,3,5 а сразу скачат непонятно почему

xixi
19.09.2015, 11:00
Задать переменную нужно явно при старте. У меня была такая фигня. Помогло это....