Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - где ошибка

Ответить
Настройки темы
Delphi - где ошибка

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
procedure TForm1.Button3Click(Sender: TObject);
var
year, month_file, month_schetchik_edit : string;
month_conf : textfile;
month_schetchik : double;
begin
year := Edit1.Text[7] + Edit1.Text[8];
month_file := (GetCurrentDir + '\tmp\01.01.' + year + '.tmp');

if FileExists(month_file) then
       begin
       AssignFile(month_conf,month_file);
       Reset(month_conf);
       readln(month_conf,month_schetchik_edit);
       CloseFile(month_conf);
       month_schetchik := StrToFloat(month_schetchik_edit);
       end
       else
       AssignFile(month_conf,month_file);
       ReWrite(month_conf);
       writeln(month_conf,'0');
       CloseFile(month_conf);
       end
showmessage(month_schetchik);

end;
ругается на строку showmessage(month_schetchik);

[dcc32 Error] Unit1.pas(219): E2029 ';' expected but identifier 'showmessage' found
[dcc32 Error] Unit1.pas(221): E2029 '.' expected but ';' found

Код еще не дописан, но тут с ендами подозреваю напутал, не компилируется, где ошибка подскажите?

Вообще мне надо несколько if exist then else. Сначало одно проверить, потом другое, никак с ендами не разберусь.

Отправлено: 23:25, 07-02-2013

 

Аватара для cookie_monster

Новый участник


Сообщения: 41
Благодарности: 9

Профиль | Отправить PM | Цитировать


Во первых - после else должна идти конструкция begin и заканчивается end;
Во вторых showmessage принимает аргументы типа String(Строка) а вы передаете переменную month_schetchik типа Double.

Попробуйте так:
Код: Выделить весь код
procedure TForm1.Button3Click(Sender: TObject);
var
year, month_file, month_schetchik_edit : string;
month_conf : textfile;
month_schetchik : double;
begin
year := Edit1.Text[7] + Edit1.Text[8];
month_file := (GetCurrentDir + '\tmp\01.01.' + year + '.tmp');

if FileExists(month_file) then
       begin
         AssignFile(month_conf,month_file);
         Reset(month_conf);
         readln(month_conf,month_schetchik_edit);
         CloseFile(month_conf);
         month_schetchik := StrToFloat(month_schetchik_edit);
       end
       else
         begin
           AssignFile(month_conf,month_file);
           ReWrite(month_conf);
           writeln(month_conf,'0');
           CloseFile(month_conf);
        end;

showmessage(month_schetchik_edit);

end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:42, 07-02-2013 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для lxa85

Необычный


Contributor


Сообщения: 4466
Благодарности: 995

Профиль | Сайт | Отправить PM | Цитировать


ну так закрой оператор условного перехода точкой с запятой
if <условие> then <оператор> else <оператор> ;
А конструкция begin end -- это операторные скобки. Т.е. когда надо несколько операторов (следи за множественными окончаниями) представить системе как один.
Соотв полный вариант:
Код: Выделить весь код
if (<условие>) then begin // открывающая операторная скобка
    <оператор>; 
    ... 
    <оператор> end // конец оператора, точку с запятой не ставим
else  begin // открывающая операторная скобка
    <оператор>; 
    ... 
    <оператор> end // конец оператора, точку с запятой не ставим
; //конец оператора if

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:47, 07-02-2013 | #3


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
function StrIsReal(AString: string): Boolean;
 var
   I: Double;
   Code: Integer;
 begin
   Val(AString, I, Code);
   Result := Code = 0;
 end;



procedure TForm1.Button3Click(Sender: TObject);
var
year, month_file, month_schetchik_edit : string;
month_conf : textfile;
month_schetchik, month_schetchik2, month_summa : double;
begin
year := Edit1.Text[7] + Edit1.Text[8];
month_file := (GetCurrentDir + '\tmp\01.01.' + year + '.tmp');

if FileExists(month_file) then
       begin
       AssignFile(month_conf,month_file);
       Reset(month_conf);
       readln(month_conf,month_schetchik_edit);
       CloseFile(month_conf);
       if StrIsReal(month_schetchik_edit) then month_schetchik := StrToFloat(month_schetchik_edit);
       end
       else
       begin
       AssignFile(month_conf,month_file);
       ReWrite(month_conf);
       writeln(month_conf,'0');
       CloseFile(month_conf);
       end
       ;

month_file := (GetCurrentDir + '\tmp\02.01.' + year + '.tmp');

if FileExists(month_file) then
       begin
       AssignFile(month_conf,month_file);
       Reset(month_conf);
       readln(month_conf,month_schetchik_edit);
       CloseFile(month_conf);
       if StrIsReal(month_schetchik_edit) then month_schetchik2 := StrToFloat(month_schetchik_edit);
       end
       else
       begin
       AssignFile(month_conf,month_file);
       ReWrite(month_conf);
       writeln(month_conf,'0');
       CloseFile(month_conf);
       end
       ;

month_summa := month_schetchik + month_schetchik2;

showmessage(FloatToStr(month_summa));
Не складывает month_schetchik + month_schetchik2, точнее month_schetchik2 почему-то считает равным 0,хотя он не 0, а реальная цифра, проверял с помощью шоумесседж на каждом этапе

Отправлено: 09:34, 09-02-2013 | #4


Новый участник


Сообщения: 34
Благодарности: 5

Профиль | Отправить PM | Цитировать


Цитата crindlok:
Не складывает month_schetchik + month_schetchik2, точнее month_schetchik2 почему-то считает равным 0,хотя он не 0, а реальная цифра, проверял с помощью шоумесседж на каждом этапе »
А можно выложить содержимое файлов, из которых берутся данные?

Отправлено: 15:10, 12-02-2013 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - где ошибка

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Canon 1120. "ошибка сервиса. Обратитесь в магазин, где был куплен принтер" Rudy Непонятные проблемы с Железом 29 26-08-2018 22:35
C/C++ - [решено] Динамическая память под двумерный массив, где ошибка?) SeRgikON Программирование и базы данных 4 04-06-2010 18:31
Где ошиблись где мне ставили или на сайте производителя ......... .Земляк. Материнские платы и память 4 02-02-2009 14:48
Подскажите где ошибка в AD alamedins Microsoft Windows NT/2000/2003 8 27-03-2006 15:05
(solved) Где ошибка в RUNONCEEX.CMD? Has17 Автоматическая установка Windows 2000/XP/2003 2 21-12-2005 20:09




 
Переход