Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2009, 23:05   #1
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию

преобразование из hex тут http://www.programmersforum.ru/showthread.php?t=72538
теперь требуется обратная процедура.
имеем edit1 и edit2. допустим пользователь записал в едит1 число 344 (часы) а в едит2 44 (минуты) и нажал button2. должно произойти следующее-
1. переводим часы из едит1 в секунды- 344*3600=1238400сек
2. переводим минуты из едит2 в секунды- 44*60=2640сек
3. складываем 1238400+2640=1241040 сек
4. переводим в hex- 1241040=12EFD0
5. меняем значение hex следующим порядком-
12EFD0
D0EF12
(функция имеется)
6. вызываем savedialog и сохраняем D0EF12 в .txt

ну помогите. берем числа из едит1 переводим в переменную? умножаем на 3600? числа из едит2 в переменную и умножаем на 60? складываем 2 переменные?
как процедуру писать онклик баттон2?
procedure TForm1.Button2Click(Sender: TObject);
begin
savedialog? или сначало расчеты?

Последний раз редактировалось Stilet; 27.11.2009 в 07:42.
fize вне форума Ответить с цитированием
Старый 27.11.2009, 00:40   #2
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

не тупи. вычисляем-сохраняем

edit1.Text:=inttohex(323, 8);
8 число знаков в которые переводить

остальное ты уже знаешь
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Старый 27.11.2009, 00:47   #3
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
 Edit1.Text:= '';
 Edit2.Text:= '';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 time: integer;//предполагаю целые числа часов и минут
 str_hex: string;
begin
try
 time:= StrToInt(Edit1.Text)*3600;
 time:= time + StrToInt(Edit2.Text)*60;
except
 ShowMessage('Введите оба значения цифрами!');
 exit;
end;
 str_hex:= IntToHex(time, 1);
 ShowMessage(str_hex);
 //тут вызываешь функцию преобразования своего.

end;
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 27.11.2009, 01:26   #4
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию

Цитата:
Сообщение от Roof Посмотреть сообщение
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
 Edit1.Text:= '';
 Edit2.Text:= '';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 time: integer;//предполагаю целые числа часов и минут
 str_hex: string;
begin
try
 time:= StrToInt(Edit1.Text)*3600;
 time:= time + StrToInt(Edit2.Text)*60;
except
 ShowMessage('Введите оба значения цифрами!');
 exit;
end;
 str_hex:= IntToHex(time, 1);
 ShowMessage(str_hex);
 //тут вызываешь функцию преобразования своего.

end;
спасибо большое. теперь не разберусь как 12EFD0 перевернуть до D0EF12
пробую продолжить-
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
 i,time: integer;
 s,ns,str_hex: string;
begin
try
 time:= StrToInt(Edit1.Text)*3600;
 time:= time + StrToInt(Edit2.Text)*60;
except
 ListBox1.Items.Add('Ââåäèòå îáà çíà÷åíèÿ öèôðàìè!');
 exit;
end;
 str_hex:= IntToHex(time, 1);
 //ListBox1.Items.Add(str_hex);
begin
 s:=(str_hex);
 if Length(s) mod 2<>0 then exit;//åñëè â ñòðîêå íå÷åòíîå êîë-âî ñèìâîëîâ òî âûõîä
 ns:='';
 for i:=Length(s)div 2 downto 1 do ns:=ns+Copy(s,i*2-1,2);
 begin
 ListBox1.Items.Add(ns);
end;
end;
но сюда ListBox1.Items.Add(ns); ничего не выводится. где ошибся?
все разобрался.

Последний раз редактировалось Stilet; 27.11.2009 в 07:42.
fize вне форума Ответить с цитированием
Старый 27.11.2009, 01:42   #5
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Код:
{$R *.dfm}

//функция преобразования
function My_mix(s: string): string;
var i:integer;
 ns:string;
begin
 if Length(s) mod 2<>0 then exit;//если в строке нечетное кол-во символов то выход
 ns:='';
 for i:=Length(s)div 2 downto 1 do ns:=ns+Copy(s,i*2-1,2);
 Result:=ns;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
 Edit1.Text:= '';
 Edit2.Text:= '';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 time: integer;//предполагаю целые числа часов и минут
 str_hex, str_mix: string;
begin
try
 time:= StrToInt(Edit1.Text)*3600;
 time:= time + StrToInt(Edit2.Text)*60;
except
 ShowMessage('Введите оба значения цифрами!');
 exit;
end;
 str_hex:= IntToHex(time, 1);
 ShowMessage(str_hex);
 //тут вызываешь функцию преобразования своего.
 str_mix:=  My_mix(str_hex);
 ShowMessage(str_mix);

 ListBox1.Items.Add(str_mix);

end;

end.
почему в твоих топиках - код как код PHP?
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 27.11.2009, 02:17   #6
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию

Roof если преобразовывать 344 часа 44 минуты то все правильно-
12EFD0
D0EF12
а если попробовать преобразовать 141 час 11 мин то-
7C164
167C
а должно-
64C170
Цитата:
почему в твоих топиках - код как код PHP?
да так вроде удобнее
fize вне форума Ответить с цитированием
Старый 27.11.2009, 02:23   #7
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

исправь строку
Код:
 str_hex:= IntToHex(time, 1);
на строку
Код:
  str_hex:= IntToHex(time, 8);
Как удобней сам, конечно, решай. Но как-то непривычно подсветку разглядывать другую.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 27.11.2009, 02:27   #8
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию

отлично. спасибо.
как теперь полученное значение сохранить в файл .txt?
Цитата:
Как удобней сам, конечно, решай. Но как-то непривычно подсветку разглядывать другую.
ок. php больше не использую
fize вне форума Ответить с цитированием
Старый 27.11.2009, 02:36   #9
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Полученное в списке ListBox?
Код:
//новая кнопка - сохранить
procedure TForm1.Button2Click(Sender: TObject);
begin
 if ListBox1.Items.Count > 0 then
   ListBox1.Items.SaveToFile('my_text.txt')
 else
   ShowMessage('Пустой список - нечего сохранять!')
end;
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 27.11.2009, 02:43   #10
fize
Форумчанин
 
Регистрация: 24.11.2009
Сообщений: 155
По умолчанию

Цитата:
Сообщение от Roof Посмотреть сообщение
Полученное в списке ListBox?
Код:
//новая кнопка - сохранить
procedure TForm1.Button2Click(Sender: TObject);
begin
 if ListBox1.Items.Count > 0 then
   ListBox1.Items.SaveToFile('my_text.txt')
 else
   ShowMessage('Пустой список - нечего сохранять!')
end;
нет немного не то. если можно надо подключить savedialog и сохранять не с листбокса (это я для себя в листбокс вывожу) а с переменной. я код немного изменил сейчас так-
Код:
begin
try
 time:= StrToInt(Edit1.Text)*3600;
 time:= time + StrToInt(Edit2.Text)*60;
except
 ListBox1.Items.Add('Ââåäèòå îáà çíà÷åíèÿ öèôðàìè!');
 exit;
end;
 str_hex:= IntToHex(time, 8);
 str_mix:=  My_mix(str_hex);
 temp:=(str_mix);
for i:=1 to 73-length(str_mix) do temp:='0'+temp;
 ListBox1.Items.Add(temp);
соответственно сохранять нужно из переменной temp и данные дожны принять вид-
[3] //номер значения не имеет, произвольно
0=тут данные с переменной temp
вот так-
Цитата:
[3]
0=000000000000000000000000000000000 00000000000000000000000000000009071 0D00
p.s без пробелов

Последний раз редактировалось fize; 27.11.2009 в 02:46.
fize вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отыскать числа в Hex-редакторе HellMercenariess Свободное общение 3 27.10.2009 12:41
Алгоритм перевода числа в hex text. Ivan_32 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 02.12.2008 21:36
Преобразование числа в строку )Игнат( Общие вопросы Delphi 6 06.07.2008 09:32
Преобразование десятичного числа в двоичное. Quize Паскаль, Turbo Pascal, PascalABC.NET 4 12.04.2008 16:09
Преобразование числа с плавающей точкой в строку Sibedir Общие вопросы Delphi 14 09.03.2008 21:48