Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
ВнизПодскажите в чем ошибка Найти похожие ветки
← →
гость (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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.037 c