Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];

Вниз

Опять ТП7.   Найти похожие ветки 

 
Miwa   (2002-04-16 09:54) [0]

На этот раз я прозрел от следуещей вещи: Error 105: File not open for output. И это в следуещем месте:

procedure OutputRes;
var i:byte;
begin
i:=0;
GoToXY(5,wherey+1); Write("No");// <-- здесь и есть еррор
GoToXY(15, wherey); Write("X");
GoToXY(30, wherey); Write("Y");
GoToXY(50, wherey); Write("Y""");
GoToXY(70, wherey); Write("|X-X|");

Кстати говоря, в программе вообще не используется работа с файлами.
Вот правду говорят: век живи - век учись. Прога что, воспринимает консоль как файл? Тогда почему он не открыт для для вывода? Заранее спасибо.


 
MBo   (2002-04-16 10:10) [1]

чудеса какие-то говоришь ;)


 
drpass   (2002-04-16 10:16) [2]

Испокон веков консоль, принтер и порты ввода-вывода для операционки являются обычными файлами последовательного доступа, такими же, как и файлы на диске.
А раз выдает такую ошибку - значит, либо глюк с модулем System, либо ты что-то ранее намудрил с потоками ввода-вывода.


 
Miwa   (2002-04-16 10:22) [3]

2 МВо: Ага, говорю же, что прозрел.
2 drpass: Да я в курсе насчет файлов.
А вводом-выводом я вообще ничего не делал, клянусь ;о)). Насчет system - не знаю, не скажу.


 
Shaman_Naydak   (2002-04-16 10:22) [4]

Действительно.. интересные вещи ты сообщаешь..
а в каком режиме ты работаешь?
И попробуй установить DirectVideo:=True;
Хотя и так это должно быть установлено


 
Song   (2002-04-16 10:28) [5]

Может режимы текстовые меняли?


 
drpass   (2002-04-16 10:29) [6]

Попробуй сделать Assign(output, "CON");
Rewrite(output);


 
Shaman_Naydak   (2002-04-16 12:34) [7]

>> drpass.
черт с ним, с потоком вывода..
Ему как раз таки не надо работать через поток вывода (он же позиционирует на экране и потом выводит).. я потому и спросил насчет DirectVideo (когда подключаешь Crt, то вывод в Writeln идет напрямую в видеопамять)


 
Anatoly Podgoretsky   (2002-04-16 12:41) [8]

Да у тебя просто чудеса в программе и приведенного кода недостаточно для их определения.


 
Miwa   (2002-04-16 13:00) [9]

2 Anatoly Podgoretsky © (16.04.02 12:41):
Ну все, Вы напросились ;о) Привожу полный текст программы. Держитесь ;о)) Ошибка - почти в самом низу (OutputRes - кажись предпоследняя процедура.

uses crt;
const dn=11;{interfase...}
var look: char;{current char}
vrbl: real;{X}
i:byte;{char counter}
curr,funk,fdef,sdef:string;{functionals}
a,b,c:real;{borders}
eps:real;{bingo}
x,y,d,r:array[0..20]of real;
{---------------------------------------------------------------}
function Expression: real; Forward;
{---------------------------------------------------------------}
procedure GetChar;
begin
look:=curr[i];
if i>length(curr) then look:=" ";
inc(i);
end;
{--------------------------------------------------------------}
procedure Match (x: char);
begin
if look = x then GetChar
end;
{--------------------------------------------------------------}
function IsAlpha (c: char): boolean;
begin
IsAlpha:=upcase (c) in ["A".."W","Y","Z"]
end;
{--------------------------------------------------------------}
function IsVar(c:char):boolean;
begin
IsVar:=upcase(c) = "X"
end;
{--------------------------------------------------------------}
function IsDigit (c: char): boolean;
begin
IsDigit := c in ["0".."9","."];
end;
{--------------------------------------------------------------}
function IsAddop (c:char):boolean;
begin
IsAddop:=c in ["+","-"];
end;
{--------------------------------------------------------------}
function GetNum: real;
var Value: real;
begin
Value := 0;
while IsDigit (Look) do begin
Value := 10 * Value + Ord (Look) - Ord ("0");
GetChar;
end;
GetNum := Value;
end;
{---------------------------------------------------------------}
function Func:real;
var name:string[3];
begin
name:="";
while look <> "(" do
begin
name:=name+look;
getchar;
end;
Match("(");
{FUCKEN CASE!!!!!!!}
if name = "sin" then func:=sin(expression*pi/180);
if name = "cos" then func:=cos(expression*pi/180);
if name = "tan" then func:=sin(expression*pi/180)/cos(expression*pi/180);
if name = "cot" then func:=cos(expression*pi/180)/sin(expression*pi/180);
if name = "ln" then func:=ln(expression);
if name = "exp" then func:=exp(expression);
{to be continued...}
match(")");
end;
{---------------------------------------------------------------}
function Factor: real;
begin
if Look = "("then
begin
Match ("(");
Factor := Expression;
Match (")");
end
else if IsAlpha(Look) then factor:=func
else if IsVar(look) then begin factor:=vrbl;getchar end
else Factor := GetNum
end;
{---------------------------------------------------------------}
function Power:real;
var value:real;
begin
value:=factor;
if look="^" then
begin Match("^"); Value := exp(factor*ln(abs(value))); end;
power:=value;
end;
{---------------------------------------------------------------}
function Term: real;
var Value: real;
begin
Value := power;
while Look in ["*", "/"] do begin
case Look of
"*": begin Match("*"); Value := Value * power; end;
"/": begin Match("/"); Value := Value / power; end;
end;
end;
Term := Value;
end;
{---------------------------------------------------------------}
function Expression: real;
var Value: real;
begin
if IsAddop (Look) then Value := 0 else Value := term;
while IsAddop (Look) do
begin
case Look of
"+": begin Match ("+"); Value := Value + term end;
"-": begin Match ("-"); Value := Value - term end
end{case}
end;
Expression := Value;
end;
{--------------------------------------------------------------}
function interp(what:string;x:real):real;
begin
i:=2;
curr:=what;
vrbl:=x;
look:=curr[1];
interp:=Expression;
end;
{--------------------------------------------------------------}
{End of interpretator}


 
Miwa   (2002-04-16 13:02) [10]

Упс.... Не лезет.... Поднажмем...

{--------------------------------------------------------------}
procedure InputData;
begin
ClrScr;TextColor(7);
Write("F(X)="); Readln(funk);
Write("F""(X)="); ReadLn(fdef);
Write("F""""(X)=");ReadLn(sdef);
Write("Start from: "); ReadLn(a);
Write("Stop in: "); ReadLn(b);
Write("Capasity "); ReadLn(eps);
end;
{--------------------------------------------------------------}
procedure OutputRes;
var i:byte;
begin
i:=0;
GoToXY(5,wherey+1); Write("No");
GoToXY(15, wherey); Write("X");
GoToXY(30, wherey); Write("Y");
GoToXY(50, wherey); Write("Y""");
GoToXY(70, wherey); Write("|X-X|");
repeat
GoToXY(4,wherey+1); Write(i);
GoToXY(10, wherey); Write(x[i]:9:5);
GoToXY(24, wherey); Write(y[i]:9:5);
GoToXY(45, wherey); Write(d[i]:9:5);
GoToXY(65, wherey); Write(r[i]:9:5);
inc(i);
until r[i] < abs(eps);
end;
{--------------------------------------------------------------}
procedure Release(start:real);
var i:byte;
begin
i:=0;
x[i]:=start;
repeat
y[i]:=interp(funk,x[i]);
d[i]:=interp(fdef,x[i]);
x[i+1]:=x[i]-y[i]/d[i];
r[i]:=abs(x[i+1]-x[i]);
inc(i);
until r[i-1] < eps;
OutputRes;
end;
{--------------------------------------------------------------}
var t:real;k:byte;
begin
InputData;
c:=a;k:=0;
repeat
if interp(funk,c)*interp(funk,c+1) <= 0 then
begin
t:=interp(funk,c)*interp(sdef,c);
if t > 0 then release(c) else
if t < 0 then release(c+1) else
if t = 0 then if interp(funk,c)=0 then write("y=",c:8:5)
else write("y=",c+1:8:5);
inc(k);
end;
c:=c+1;
until c > b;
Write("Found ",k," decisions.");
readkey
end.

Финиш...


 
Anatoly Podgoretsky   (2002-04-16 13:08) [11]

И чего весь этот длинный код читать?
uses crt;
begin
Write("TEST");
end.

Работает?


 
SB.John   (2002-04-16 13:13) [12]

Не поленился, откомпилил твой файлик на ТП7 под Win2K. Только перед readkey в конце основного блока вставил OutputRes, чтобы твое проблемное место точно вызывалось. Проблем нет, все выводит ок (могу скрнишот прислать). Правда, это если exe-шник отдельно запускать. Из под турбо-паскаля какую-то ошибку дает (W2K все-таки)


 
Miwa   (2002-04-16 14:14) [13]

2 Anatoly Podgoretsky © (16.04.02 13:08)
Да нет, не стоит. Просто слова
> приведенного кода недостаточно для их определения

я понял буквально ;о))).
2 All
Вообще-то программка не на каждую функцию ругается, а только на избранные. Например x-2sin(x). Тоесть, если вы зададите, например, x^3-12*x+6, например, то все ОК, прога свое отработает. И даже правильно ;о) Вот такие вот дела...


 
Shaman_Naydak   (2002-04-16 14:20) [14]

У меня все ок хоть под средой, хоть из виндов (тоже W2K).
У меня есть идея почему у Miwa не работает..
У тебя наверное кривая заплатка на Crt модуле стоит (чтоб он работал на P-Pro и выше)..
Если надо будет шли письмо.. я те вышлю корректный модуль turbo.tpl (сам недавно для кого-то правил :), вышлю с исходником crt.asm)


 
Shaman_Naydak   (2002-04-16 14:35) [15]

Если не на каждую.. то ты значит где-то пишешь некорректно (за пределами переменной).. включи Range Check Error, Overflow Error и прочие.. и проверь..
Мда.. парсер у тебя еще тот, я скажу :)


 
SB.John   (2002-04-16 15:45) [16]

На твою избранную функцию тоже не ругается. Правда, я вспотел вычислять для нее первую и вторую производные но результат получил.


 
Miwa   (2002-04-16 19:41) [17]

2 SB.John:

> я вспотел вычислять для нее первую и вторую производные

:o))))))))

> результат получил

???
Офигеть... Можно скриншот на мыло?


 
Ezh   (2002-04-16 20:02) [18]

u menya bila takaya zhe problema pod WinXP, but pod 98 vse ok.



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

Форум: "Основная";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.005 c
3-94282
Igor65
2002-04-08 14:54
2002.04.29
Как импортировать информацию из txt файла в базу


7-94598
_Alex_
2002-01-27 21:50
2002.04.29
как прочесть данные из ярлыка


7-94597
Chak
2002-02-04 22:45
2002.04.29
Формат системной дати!!!


1-94404
Roman9
2002-04-07 10:57
2002.04.29
Как запустить из одного exe-файла другой?


3-94306
Seri
2002-04-05 07:02
2002.04.29
Не полная(целая) строка в DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский