Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.10.2009, 22:05
inferno mf inferno mf вне форума
Прохожий
 
Регистрация: 13.09.2009
Сообщения: 19
Репутация: 10
По умолчанию перевод из двоичной, в чем ошибка?

Нужно оформить алгоритм в виде подпрограммы. Без нее работает отлично, но нужно именно так... Возникает ошибка "Statement expected but 'PROCEDURE' found ". В чем дело?

PHP код:
unit Unit1;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsStdCtrls;

type
  TForm1 
= class(TForm)
    
Edit1TEdit;
    
Edit2TEdit;
    
procedure FormCreate(SenderTObject);
    
procedure Edit1KeyPress(SenderTObject; var KeyChar);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form1TForm1;

implementation

{$R *.dfm}

function 
st(s:string):string;
 var 
i,j,sum,sum2:integer;
 
begin
 sum
:=0;
 for 
i:=Length(s)-1 downto 1 do
 
begin
 
if s[i]='1' then
  begin
  sum2
:=1;
  for 
j:=1 to Length(s)-do sum2:=sum2*2;
  
end
  
else sum2:=0;
  
sum:=sum+sum2;
 
end;
 if 
s[Length(s)]='1' then Inc(sum);

  
procedure TForm1.FormCreate(SenderTObject);
begin
 Edit1
.Clear;
  
Edit2.Clear;
end;


procedure TForm1.Edit1KeyPress(SenderTObject; var KeyChar);
begin
    
if Key #13 then Edit2.Text:=st(Edit1.Text);
end;

end

С этим уже разобрался.. энда не хватало, но после нажатия Enter числа в 1-ой строке не появляется результат перевода...

Последний раз редактировалось inferno mf, 21.10.2009 в 22:08.
Ответить с цитированием
  #2  
Старый 21.10.2009, 22:20
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Любой функции нужен результат...
Випиши в конце алгоритма твоей функции
Result := ...
Вместо точек ту переменную которая принимает результат...в твоем случае по моему summ, т.е.
Result := summ;
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #3  
Старый 21.10.2009, 22:24
inferno mf inferno mf вне форума
Прохожий
 
Регистрация: 13.09.2009
Сообщения: 19
Репутация: 10
По умолчанию

PHP код:
unit Unit1;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsStdCtrls;

type
  TForm1 
= class(TForm)
    
Edit1TEdit;
    
Edit2TEdit;
    
procedure FormCreate(SenderTObject);
    
procedure Edit1KeyPress(SenderTObject; var KeyChar);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form1TForm1;

implementation

{$R *.dfm}

function 
st(s:string):integer;
 var 
i,j,sum,sum2:integer;
 
begin
 sum
:=0;
 for 
i:=Length(s)-1 downto 1 do
 
begin
 
if s[i]='1' then
  begin
  sum2
:=1;
  for 
j:=1 to Length(s)-do sum2:=sum2*2;
  
end
  
else sum2:=0;
  
sum:=sum+sum2;
 
end;
 if 
s[Length(s)]='1' then Inc(sum);
 
result:=sum;
    
end;
  
procedure TForm1.FormCreate(SenderTObject);
begin
 Edit1
.Clear;
  
Edit2.Clear;
end;


procedure TForm1.Edit1KeyPress(SenderTObject; var KeyChar);
begin
    
if Key #13 then Edit2.Text:=st(Edit1.Text);
end;

end

Я тоже уже на это обратил внимание, изменил, теперь несовместимость типов String и Integer в строке if Key = #13 then Edit2.Text:=st(Edit1.Text);
Ответить с цитированием
  #4  
Старый 21.10.2009, 22:43
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Функция st возвращает integer
Код:
Edit2.Text:=IntToStr(st(Edit1.Text)); 
Или меняй результат функции.
Ответить с цитированием
  #5  
Старый 21.10.2009, 22:49
inferno mf inferno mf вне форума
Прохожий
 
Регистрация: 13.09.2009
Сообщения: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от TOJluK
Функция st возвращает integer
Код:
Edit2.Text:=IntToStr(st(Edit1.Text)); 
Или меняй результат функции.

спасибо) теперь все ок
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:06.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025