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

Вниз

Подскажите в чем ошибка   Найти похожие ветки 

 
гость   (2004-12-31 12:26) [0]

Посмотрите пожалуйста код 0 записывает, а если exp существует
то значение не записывает

var
ex,a,b:word;
w:string;
f1:textfile;
begin
ex:=pos("exp",sOld);
if ex=1 then
 begin
  a:=pos("(",sOld);
  a:=2;
  b:=a+1;
  while ((sOld[b]>="0")and(sOld[b]<="9"))do
   begin
    w:="" ;
    w:=sOld[b]+w;
   end;
  AssignFile(F1,"c:\Razbor.txt");
  Rewrite(F1);
  Writeln(F1,w);
  CloseFile(F1) ;

  end
 else
  begin
   AssignFile(F1,"c:\Razbor.txt");
   Rewrite(F1);
   Writeln(F1,"0");
   CloseFile(F1) ;
  end;
end;


 
begin...end ©   (2004-12-31 12:33) [1]

> гость   (31.12.04 12:26)

Значение, наверное, записывается, но пустое? Ну тогда, значит, цикл while ни разу не выполняется, т.е. не выполняется условие sOld[b] in ["0".."9"].


 
гость   (2004-12-31 12:36) [2]

подскажите как можно исправить


 
Digitman ©   (2004-12-31 12:40) [3]


>   a:=pos("(",sOld);
>   a:=2;


бред какой-то ..

с НГ !


 
гость   (2004-12-31 12:41) [4]

если убрать a:=2 прога вообще виснет


 
begin...end ©   (2004-12-31 12:42) [5]

> [2] гость   (31.12.04 12:36)

А что этот код ДОЛЖЕН делать?


 
DiamondShark ©   (2004-12-31 12:44) [6]


>   while ((sOld[b]>="0")and(sOld[b]<="9"))do
>    begin
>     w:="" ;
>     w:=sOld[b]+w;
>    end;

Эта... Можно русскими словами пересказать условие завершения этого цикла?

"бред какой-то .." (ц)


 
гость   (2004-12-31 12:49) [7]


> А что этот код ДОЛЖЕН делать?

есть строка в которой на первой позиции exp(какое-то число)
надо сделать следующее записать в файл это самое число если оно существует иди 0 если числа нет


 
Digitman ©   (2004-12-31 12:57) [8]


> есть строка в которой на первой позиции exp(какое-то число)


кроме "exp(какое-то число)" (неважно в какой позиции) в этой строке еще что-то может быть


 
гость   (2004-12-31 13:03) [9]

да может быть но exp должна быть первой.
например
exp(54)*(.............)


 
Digitman ©   (2004-12-31 13:09) [10]

т.е. строка, где в нач.позициях присутствует exp(), являет собой не иначе как арифметическое выражение ?


 
begin...end ©   (2004-12-31 13:21) [11]

> [7] гость   (31.12.04 12:49)

var
 P: Integer;
 sOld, sValue: String;

begin
 P := Pos("exp(", sOld);
 if P = 1 then
 begin
   P := Pos(")", sOld);
   P := P - 5;
   if P > 0 then
   begin
     sValue := Copy(sOld, 5, P);
     // Записываем sValue в файл
   end
 end
end.

А ещё можно было сделать с использованием PosEx.


 
begin...end ©   (2004-12-31 13:24) [12]

Ну и перед тем, как записывать, следует проверить, является ли sValue действительно строковым представлением числа.


 
Digitman ©   (2004-12-31 13:33) [13]


> begin...end


если я правильнго понял, то строка может содержать ПРОИЗВОЛЬНОЕ арифм.выр-е .. первым членом которого обязательно явл-ся ф-ция exp()

а это попахивает полноценным интерпретатором ..
дело худо)

с НГ !


 
begin...end ©   (2004-12-31 13:41) [14]

> [13] Digitman ©   (31.12.04 13:33)

> строка может содержать ПРОИЗВОЛЬНОЕ арифм.выр-е

А, ну если там может быть что угодно, в том числе и со своими скобками, и т.д., тогда, конечно, [11] не подойдёт.

Вообще, гость зациклился на разборе арифметических выражений :-), напр.: http://delphimaster.net/view/1-1104053154/

> с НГ !

Аналогично! :-) И гостя - тоже :-)



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

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

Наверх




Память: 0.5 MB
Время: 0.033 c
1-1103617605
Igor_thief
2004-12-21 11:26
2005.01.16
ImageLit


4-1101570433
Георгий
2004-11-27 18:47
2005.01.16
автоматическое выключение компъютера


14-1103032206
Vlad Oshin
2004-12-14 16:50
2005.01.16
Вероятность. Задача с ответом Объясните мне как такое возможно.


14-1104406243
_1008_
2004-12-30 14:30
2005.01.16
Иногда полезно читать афоризмы на этом сайте


1-1104322151
zokzok
2004-12-29 15:09
2005.01.16
Доступ к форме