Работаю Borland Builder C++ 6 Подскажите, пожалуйста: Необходимо файл любого типа, открываемый через opendialog, представить в виде текста из символов 16-ричного кода. А потом вернуть его обратно. Содержимое файла, конечно должно остаться прежним. Спасибо, за помощь.
Если перевод осуществлять правильно, то файл и не изменится. Код (Text): UINT r2h(byte*buf,char*txt,UINT cnt,UINT max) { char[16] hex=(48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70); UINT i; for (i=0;(i<cnt)&(i*2<max-1);i++) { txt[i*2+1]=hex[(buf[i]&&0xF0)>>4]; txt[i*2]=hex[buf[i]&&0x0F]; } i=i*2+1; txt[i-1]=0; return i; } на входе buf,cnt - данные из файла и его длина, txt,max - буфер под шестнадцатеричную строку и его размер на выходе - количество байт занятых в буфере под строку шестнадцатеричных значений.
buf - данные из файла? Что это означает, ну есть файл C:\abc.qwe(любого типа), где его данные? Опиши поподробнее переменные buf,cnt,txt,max, пожалуйста.
- На винте А в буфер тебе их нужно прочитать где-то так: Код (Text): invoke CreateFile,lp_name,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL invoke CreateFileMapping,eax,NULL,PAGE_READONLY,0,0,NULL invoke MapViewOfFile,eax,FILE_MAP_READ,0,0,0 в результате в eax у тебя адрес буффера
MHX_23 Опиши задачу подробней. Что значит "открываемый через opendialog"? opendialog файлы не открывает, а только возвращает выбранное пользователем имя. Что значит "представить в виде текста"? кому представить? сохранить в буфере? показать в окне? Что значит "потом вернуть его обратно"? что вернуть? содержимое файла? содержимое файла "в виде текста"?
MHX_23 bintodb.exe в пакете masm ? или на С в файл ... ? Код (Text): #include <stdio.h> #include <string.h> FILE* in = NULL; FILE* out = NULL; int x = 0; int hex = 0x00; char* oFile; int main(int argn, char *argv[]){ if(!argv[1]) return 0; if(!(in = fopen(argv[1], "r"))) return 0; oFile = strcat(argv[1], ".hexDump"); if(!(out = fopen(oFile, "w"))) return 0; while((hex = fgetc(in)) != EOF){ if(!(++x & 0xFF)) fprintf(out ,"0x%02X,\n", hex); else fprintf(out ,"0x%02X, ", hex); } fclose(in); fclose(out); return 0; }
Опиши задачу подробней. Нужно зашифровать файл, а потом расшифровать. Алгоритм работает со строкой 16-ричных символов. Как файл сделать строкой таких символов, а после вернуть эту строку снова в файл, который будет одинаков с исходным. открываемый через opendialog имел в виду: Код (Text): AnsiString filename; if (OpenDialog1->Execute()) { file = OpenDialog1->FileName; Memo1->Lines->LoadFromFile(OpenDialog1->FileName); }