Вниз
Скачать: CL | DM;

Как считать файл и получить массив из байт   Найти похожие ветки 

← →
zodiak ©   (2005-10-11 15:48) [0]

Есть Файл примерного содержания...

INTGl                   тя      цяця    
       
  
 шяшяъяъя         
    
 тятяьяья         
         фяфяюяюя                        тятя           
     

Со структурой файла более менее разобрался
Теперь задача моя получить файл аналогичного типа
Но с немного измененными данными ...

Как такое сделать ?

Т.е. Кодировка ASCII , ...

Код каждого символа я расшифровал ...



procedure TForm2.Button1Click(Sender: TObject);
var f,f1:file;
   i,size:integer;
   s,s1:string;
   buf : array [1..258] of integer;
   ch:char;
   St:Tstrings;
begin
st:=nil;
If Opendialog1.Execute then
try
St:=TstringList.Create;
St.LoadFromFile(opendialog1.FileName); //Загрушаю файл

S:=St.Text; // сохраняю файл в строку

Memo1.Lines.Add(s);// - !!! Выводит не все символы , т.к. не видит конца строки

For i:=1 to (246+12) do   //почему не 246 - не размер файла
 begin
    memo1.Lines.Add(inttostr(ord(s[i]))); // Выводит код каждого символа в файле
    buf[i]:=ord(s[i]);

    Memo2.Lines.Add(inttostr(ord(s1[i])));
 end;

memo2.Clear;
St.clear;
St.text:=S;
St.Savetofile("1__Mat.mat");// - ПОЧЕМУ не сохраняет как исходный файл
{
for i:=1 to 258 do           // 246 (Исходный размер файла)+12
Memo2.Lines.Add(inttostr(buf[i]));

St.SaveToFile("Lenokkk.mat");
except
 Showmessage("Name fule invalid");
end;
if assigned(st) then  St.Free;
end;

end.


Короче говоря как считать файл ПОБАЙТНО , получить массив из байт (этого файла).
И как ПОБАЙТНО сохранить , чтоб структура файла не поменялась ? ....


← →
Digitman ©   (2005-10-11 15:54) [1]

это не текстовый файл.


← →
Ega23 ©   (2005-10-11 16:00) [2]


> St:=TstringList.Create;


С фига-ли TStringList??????

Грузи в TMemoryStram, а потом по-байтно пробуй оттуда читать...


← →
лысеющий   (2005-10-11 16:00) [3]


procedure TForm1.Button1Click(Sender: TObject);
var
 F: File;
 ChrBuf: array of Char;
begin
 AssignFile(F,"èìÿ_ôàéëà");
 try
   Reset(F,1);
   try
     SetLength(ChrBuf,FileSize(F));
     BlockRead(F,ChrBuf[0],FileSize(F));
     Memo1.Text := String(ChrBuf);
   finally
     ChrBuf := nil;
     CloseFile(F);
   end;
 except
   //error
 end;

end;


P.S не проверял


← →
zodiak ©   (2005-10-11 17:11) [4]

пока тоже не проверял ....

BlockRead(F,ChrBuf[0],FileSize(F));
                          ^
              Почему ноль ????


← →
Digitman ©   (2005-10-11 17:19) [5]


> Почему ноль ?


а почему бы НЕ ноль ?


← →
zodiak ©   (2005-10-11 17:26) [6]

Ну тут я считываю всего-лишь первый байт ...
А весь файл зачитать массивом ???
меня 0 на  интересю нас число ???...


← →
TUser ©   (2005-10-11 19:00) [7]

> Почему ноль ????

Это первый элемент. Остальные в памяти располагаются пследовательно, а читать надо начиная с первого.


← →
cyborg ©   (2005-10-12 14:49) [8]


> [7] TUser ©   (11.10.05 19:00)
> а читать надо начиная с первого.

Ты хотел сказать с нулевого? :)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.064 c
14-1129575930
NewWonder
2005-10-17 23:05
2005.11.06
Мастера web-дизайна!


14-1129126877
ArtemESC
2005-10-12 18:21
2005.11.06
Низкоуровневая работа с таймером...


4-1124470423
iskatel
2005-08-19 20:53
2005.11.06
ReadDirectoryChangesW


6-1121457872
redlord
2005-07-16 00:04
2005.11.06
все компы в сети


3-1127814213
Бизон
2005-09-27 13:43
2005.11.06
Структурирование в XML файлах




   Наверх