![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Здравствуйте! Возникла проблема! Есть программа, она считывает информацию из TXT, конвертирует ее в HEX и записывает в Memo1. Но вот проблема:в файле есть как слова, так и цифры. Слова программа правильно конвертирует, а цифры - нет. Вот сайт, где указаны данные и их перевод(служит мне примером) https://ccrma.stanford.edu/courses/4...ts/WaveFormat/  именно эта картинка https://ccrma.stanford.edu/courses/4...wave-bytes.gif Как сделать, что бы в Memo1 было так, как на рисунке?: 
		
	
		
		
			52 49 46 46 24 08 00 00 57 41 56 45 66 6d 74 20 10 00 00 00 01 00 02 00 22 56 00 00 88 58 01 00 04 00 10 00 64 61 74 61 00 08 00 00 00 00 00 00 А не так: 52 49 46 46 0D 0A 32 30 38 34 0D 0A 57 41 56 45 0D 0A 66 6D 74 20 0D 0A 31 36 0D 0A 31 0D 0A 32 0D 0A 32 32 30 35 30 0D 0A 38 38 32 30 30 0D 0A 34 0D 0A 31 36 0D 0A 64 61 74 61 0D 0A 32 30 34 38 0D 0A Ясное дело цифры могут быть разными, но это пример. Вот код программы: Код: 
	unit Unit1;
 
interface
 
uses
  SysUtils, Classes, Controls, Forms, StdCtrls, Dialogs, sSkinManager,
  sButton, sMemo, sLabel, sEdit;
type
  TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    sSkinManager1: TsSkinManager;
    sButton2: TsButton;
    sLabel1: TsLabel;
    sEdit1: TsEdit;
    sMemo1: TsMemo;
    sButton1: TsButton;
    procedure sButton1Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
procedure TForm1.sButton2Click(Sender: TObject);
var
F:file of byte;
z:byte;
s:string;
i:integer;
begin
sMemo1.Clear;
s:='';
i:=0;
assignfile(F, sEdit1.Text);
reset(F);
while not eof(F) do
    begin
    read(F,z);s:=s+IntToHex(z,2)+'  ';
    i:=(i+1) mod 16;
    if (i=0) or eof(F) then
        begin
        sMemo1.Lines.Add(s);
        s:='';
        end;
    end;
end;
procedure TForm1.sButton1Click(Sender: TObject);
begin
with OpenDialog1 do
    if Execute then sEdit1.Text:=FileName;
end;
end.
P.S. Использую компонент AlphaControls, но можно и без него, если вам не удобно. Он для интерфейса. Программа в целом внизу.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 ![]() Обрати внимание, выдаёт тоже, что и твоя программа. Или по-твоему Far Manager тоже неправильно работает? ![]()  | 
| Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
 
Dmitry_DM (09.08.2012)
  | ||
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Всё дело портит строка 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Код: 
	sMemo1.Lines.Add(s);  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Вот его содержимое   PHP код: 
	
		
	 | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 На днях на работе набросал для себя вьювер бинарный, если завтра вспюмню выложу код. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение: | ||
 
Dmitry_DM (09.08.2012)
  | ||
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
  | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
  | 
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Цитата: 
	
  | 
| 
		 
			 
			#10  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Вот для примера. 
		
	
		
		
			На убогость не смотреть, мне этого хватило.  | 
| 
		 
			 
			#11  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
  | 
| 
		 
			 
			#12  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Исходник не видел, каюсь, но могу предположить, что там используется IntToHex. Если это так, то возможно нужно использовать её так: int:=StrToInt('$' + IntToHex(byte, 2)); 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#13  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
  | 
| 
		 
			 
			#14  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Добавьте в функцию HexToStr() строчку:  
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Код: 
	{функция преобразования HEX -> строка}
function TForm1.HexToStr(hex: string): string;
var
  i: Integer;
begin
  hex:= StringReplace(hex, ' ', '', [rfReplaceAll]);
// вот эту
  hex:= StringReplace(hex, #13 , '', [rfReplaceAll]);
  
for i:= 1 to Length(hex) div 2 do
    Result:= Result + Char(StrToInt('$' + Copy(hex, (i-1) * 2 + 1, 2)));
end; |