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

 



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.11.2010, 16:23
Аватар для tristan
tristan tristan вне форума
Прохожий
 
Регистрация: 28.10.2010
Сообщения: 32
Репутация: 2956
Печаль Помогите с 10-й и 16-й системой счисления!

Друзья нужна помощь, я пишу лабораторную работу, создание калькулятора. Калькулятор почти готов, но нужно еще добавить кнопку чтоб он переводила из десятичной системы счисления в шестнадцатиричную. Напишите пожалуста код пожалуста.
Ответить с цитированием
  #2  
Старый 24.11.2010, 08:18
Аватар для tristan
tristan tristan вне форума
Прохожий
 
Регистрация: 28.10.2010
Сообщения: 32
Репутация: 2956
Радость

Поблема стала тепер такая, калькулятор зделал еле как. Теперь нужно добавить кнопку или же сразу две, чтоб одна переводила в 10-ую, а другая в 16-ую. Если так не получится, то есть код программы которая переводит из 10-й в 16-ую. А теперь как этот код вставить в кнопку для перевода и что нужно подправить.
Цитата:
{$APPTYPE CONSOLE}

uses
SysUtils;
const z:array[0..15] of char = (′0′,′1′,′2′,′3′,′4′,′5′,′6′,′7′,′8′,′9′,′A′,′B′,′ C′,′D′,′E′,′F′);

var x,a: integer;
s:string;

begin
readln(a);
readln(x);
s:=′′;
if a=0 then s:=′0′ else
if x<=16 then begin
while a>0 do begin
s:=z[(a mod x)]+s;
a := a div x;
end;
end;
write(s);
readln;
end.
Помогите люди добрые.
Ответить с цитированием
  #3  
Старый 21.12.2010, 11:47
Аватар для tristan
tristan tristan вне форума
Прохожий
 
Регистрация: 28.10.2010
Сообщения: 32
Репутация: 2956
По умолчанию

Написал программу перевода из 10 в 16 на паскале, открыл Делпхи , скопировал код для консольного режима а программа не ззапускается, в чем дело. Помогите. Как сделать прогу мою на Делпхи в консольном режиме и что надо подправить.
Цитата:
USES CRT;

function IntToHex(N : integer):string;

const
Hex : array[0..15] of char =
'0123456789ABCDEF';
var i, j, k : integer;
Result, s : string;
begin
Result := '';
k := n;
repeat
j := k div 16;
i := k mod 16;
Result := Result + Hex[i];
k := j;
until j = 0;
S := Result;
for i := 1 to Length(Result) do
S[Length(S)-i+1] := Result[i];
IntToHex := S;
end;

var n : integer;

BEGIN

clrscr;
Write('Введите целое десятичное число: ') ;
Readln(n);
Write('Число в шестнадцатеричной системе счисления: ', IntToHex(n), 'h');
readln;

END.

Ответить с цитированием
  #4  
Старый 21.12.2010, 12:36
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    EditHex: TEdit;
    EditDec: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  EditHex.Text:=IntToHex(1234567890123456789, 16);
  EditDec.Text:=IntToStr(StrToInt64('$'+EditHex.Text));
end;

end.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 21.12.2010, 14:43
Аватар для tristan
tristan tristan вне форума
Прохожий
 
Регистрация: 28.10.2010
Сообщения: 32
Репутация: 2956
По умолчанию

Извините меня NumLock, ваша програма почемута ругается. Особенно на два слова EditHex, EditDec. Я бы хотел уточнить это програ под DOS или нет то откуда мне взять EditHex, EditDec или их надо переименовать в Edit1 и Edit 2. На каких они вкладках находятся? Что то я отупел в конец
Ответить с цитированием
  #6  
Старый 21.12.2010, 15:11
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

это едиты на форме:
Код:
type
  TForm1 = class(TForm)
    EditHex: TEdit;
    EditDec: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
они нужны только для этого примера, чтобы было куда результат увидеть.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 21.12.2010, 17:14
Аватар для tristan
tristan tristan вне форума
Прохожий
 
Регистрация: 28.10.2010
Сообщения: 32
Репутация: 2956
По умолчанию

Я все понимаю, но смотрите, как я делал по вашему примеру. Я на формул кинул из вкладки стандартные Edit1 и Edit2. И они прописываются так:
Цитата:
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
private
{ Private declarations }
А у вас на примере написано так:
Цитата:
type
TForm1 = class(TForm)
EditHex: TEdit;
EditDec: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
а если я добавлю так:
Цитата:
TForm1 = class(TForm)
EditHex: TEdit;
EditDec: TEdit;
Edit1: TEdit;
Edit2: TEdit;
то после компиляции и запуска проги, он выдает разные сообщения, и начинает стирать EditHex: TEdit, EditDec: TEdit. Скажите пожалуста с какой вкладки вы взяли EditHex и EditDec. Я конечно понимаю детский вопрос их там конечно нету. Но как сделать чтоб всё таки прога заработала.
Ответить с цитированием
  #8  
Старый 21.12.2010, 17:48
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

В чем собственно вопрос? Edit1 и EditHex - это один и тот же компонент, с разными именами...
Код:
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

...
  Edit1.Text:=IntToHex(1234567890123456789, 16);
  Edit2.Text:=IntToStr(StrToInt64('$'+EditHex.Text));
__________________
Помогаю за Спасибо
Ответить с цитированием
  #9  
Старый 21.12.2010, 17:58
Аватар для tristan
tristan tristan вне форума
Прохожий
 
Регистрация: 28.10.2010
Сообщения: 32
Репутация: 2956
По умолчанию

Теперь он ругается на другое, посотрите на код где подчеркнуто на то и ругается:
Цитата:
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

...
Edit1.Text:=IntToHex(1234567890123456789, 16);
Edit2.Text:=IntToStr(StrToInt64('$'+EditHex.Text));

Заранее всем спасибо за помощь.
Ответить с цитированием
  #10  
Старый 21.12.2010, 18:09
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Ну что сложно догадаться? Вы ж сами поменяли имя компоненту едиту...
Код:
...
Edit2.Text:=IntToStr(StrToInt64('$'+Edit1.Text));
__________________
Помогаю за Спасибо
Ответить с цитированием
  #11  
Старый 21.12.2010, 18:38
Аватар для tristan
tristan tristan вне форума
Прохожий
 
Регистрация: 28.10.2010
Сообщения: 32
Репутация: 2956
По умолчанию

Теперь я понил. Но смотрите, в ем вопрос. Мы уже вписываем в нитри самой программе какое число перевести в 16 сист.счисления. А точнее говоря уже у нас в Edit2 уже вписано число и при запуске программы мы видим, что уже перевод готов. А нельзя ли сделать так что при запуке программы было так: Программа запустилась, но ничего там нет(пустые Edit), и мы вводим число в Edit1 и сразу появляется перевод в 16-ную в Edit2. А то постоянно менять в корне программу числа это как то затруднительно. Заранее спасибо.
Ответить с цитированием
  #12  
Старый 21.12.2010, 19:44
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
program Project1;

{$APPTYPE CONSOLE}

uses SysUtils;

var
  s: String;

begin
  while True do
  begin
    Write('Enter number (prefix $ for hex): ');
    Readln(s);
    if s='' then Exit;
    if s[1]='$' then
    begin
      Writeln('hex number='+s);
      Writeln('dec number='+IntToStr(StrToInt64Def(s, 0)));
    end else
    begin
      Writeln('dec number='+s);
      Writeln('hex number=$'+IntToHex(StrToInt64Def(s, 0), 16));
    end;
  end;
end.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #13  
Старый 22.12.2010, 06:36
Аватар для tristan
tristan tristan вне форума
Прохожий
 
Регистрация: 28.10.2010
Сообщения: 32
Репутация: 2956
По умолчанию

Большое человеческое спасибо вам NumLock и v1s2222, за помощь .
Ответить с цитированием
  #14  
Старый 20.10.2011, 11:08
Аватар для artem_lavrenuk
artem_lavrenuk artem_lavrenuk вне форума
Прохожий
 
Регистрация: 20.10.2011
Сообщения: 9
Репутация: -978
По умолчанию

сделаєш одну копку и одно поле Edit1 и все
begin
nn:=strtoint(edit1.Text);
Edit1.Text:=inttohex(nn, 8);

end;
Ответить с цитированием
  #15  
Старый 23.10.2011, 22:35
Аватар для artem_lavrenuk
artem_lavrenuk artem_lavrenuk вне форума
Прохожий
 
Регистрация: 20.10.2011
Сообщения: 9
Репутация: -978
Сообщение Помогите решить уравнение

Y+4/Y-4=X решите очень нужно
Ответить с цитированием
Ответ



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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter