Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Работ с не типизированным файлом.  [new]
FIL23
Member

Откуда:
Сообщений: 366
Добрых суток.

Хочу скачать любой файл в перменную , а потом из перменной вычитать этот файл в файл (другой).

Подскажите как ? Реально туплю.
30 ноя 18, 17:24    [21750477]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12558
Use TMemoryStream, Luke!
30 ноя 18, 17:27    [21750483]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6127
FIL23,

GetMem()/FreeMem() и вперед.
30 ноя 18, 17:58    [21750558]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
FIL23
Member

Откуда:
Сообщений: 366
а чего ни будь в стиле

var

  f:file;

procedure TForm1.Button1Click(Sender: TObject);
begin
AssignFile(f,'C:\IMG_2701.svg');
reset(f,1)
end;


можно?
30 ноя 18, 17:59    [21750559]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6127
FIL23,

А почему нет? Только еще там blockread/blockwrite должны быть...
30 ноя 18, 18:04    [21750567]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
FIL23
Member

Откуда:
Сообщений: 366
DarkMaster,

Ну вот до меня и не доходит как это сделать дальше.

Я все думаю куда он будет записывать данные из файла. Для этого ведь нужна переменная. И какого она типа?
30 ноя 18, 18:12    [21750577]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
Квейд
Member

Откуда: Kyiv, Ukraine
Сообщений: 5118
FIL23
Добрых суток.

Хочу скачать любой файл в перменную , а потом из перменной вычитать этот файл в файл (другой).

Подскажите как ? Реально туплю.


with TMemoryStream.Create do
  try
    LoadFromFile('любой файл');
    Position := 0;
    SaveToFile('файл (другой)')
  finally
    Free
  end;
  
  
30 ноя 18, 18:13    [21750579]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
FIL23
Member

Откуда:
Сообщений: 366
Квейд,

мне надо через переменную, дабы ее (ссылку на нее) потом передать в другую процедуру
30 ноя 18, 18:19    [21750590]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6127
FIL23,

var FSource,FTarget:File;
     Buffer:array[0..4095] of byte;   // это твой буффер в памяти
     Rb,Wb:integer;
begin
   Assign(FSource,'SourceFile.txt');
   reset(FSource,1);
   Assign(FTarget,'TargetFile.txt');
   rewrite(FTarget,1);
   repeat
       Rb:=BlockRead(FSource,Buffer,SizeOf(Buffer));
       Wb:=BlockWrite(FTarget,Buffer,Rb);
   until (Rb<>Wb) or (Rb=0);
   Close(FSource);
   Close(FTarget);
end;


Так что-ли?
30 ноя 18, 18:19    [21750591]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6127
FIL23
Квейд,

мне надо через переменную, дабы ее (ссылку на нее) потом передать в другую процедуру


Так тебе уже сказали:

    MemoryStream.LoadFromFile();
   
    DoSome(MemoryStream);    // сделаем что-то с тем, что в память прочитали. Например офигеем, если на вход 100-200Гб придет.
   
    MemoryStream.SaveToFile();
30 ноя 18, 18:22    [21750595]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
FIL23
Member

Откуда:
Сообщений: 366
кто наткнется на эту тему , пример решения.

procedure  test(filedd:TMemoryStream);
begin
     filedd.Position:=0;
     filedd.SaveToFile('C:\test\test.jpg');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Stm: TMemoryStream;

begin
  Stm := TMemoryStream.Create;   
  Stm.Position:=0;               
  Stm.LoadFromFile('C:\IMG_2701.JPG');
  test(Stm) ;
end;
30 ноя 18, 19:06    [21750669]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
alekcvp
Member

Откуда:
Сообщений: 1194
FIL23
procedure TForm1.Button1Click(Sender: TObject);
var
  Stm: TMemoryStream;
begin
  Stm := TMemoryStream.Create;   
  try
    Stm.Position:=0;               
    Stm.LoadFromFile('C:\IMG_2701.JPG');
    test(Stm) ;
  finally
    Stm.Free;
  end;
end;
30 ноя 18, 19:41    [21750716]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1944
FIL23
кто наткнется на эту тему , пример решения
Упаси Господь!
1 дек 18, 02:11    [21750876]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1199
white_nigger
FIL23
кто наткнется на эту тему , пример решения
Упаси Господь!


TMemoryStream давно уже deprecated
1 дек 18, 10:52    [21750935]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3631
X-Cite
TMemoryStream давно уже deprecated
А, кстати, за что его так? Интересно просто.
1 дек 18, 13:09    [21750995]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
bk0010
Member

Откуда:
Сообщений: 4691
YuRock
X-Cite
TMemoryStream давно уже deprecated
А, кстати, за что его так? Интересно просто.
+1. И что вместо него предлагают?
1 дек 18, 18:26    [21751072]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1199
bk0010
YuRock
пропущено...
А, кстати, за что его так? Интересно просто.
+1. И что вместо него предлагают?

Странно, в исходниках одной из версий напротив него стояло deprecated, или в хелпе было это написано, не помню, а в RIO уже этого нет.
А использовать TBytesStream
1 дек 18, 23:43    [21751184]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1199
Нашел, в исходниках XE6 есть коммент
3 дек 18, 11:28    [21751844]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 361
X-Cite,

в Tokyo у TMemoryStream deprecated закомментирован, а в Rio даже и коммент с deprecated удален.
3 дек 18, 12:38    [21751917]     Ответить | Цитировать Сообщить модератору
 Re: Работ с не типизированным файлом.  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1199
asutp2
X-Cite,

в Tokyo у TMemoryStream deprecated закомментирован, а в Rio даже и коммент с deprecated удален.


Да.. он всегда был закомментирован...

Просто работать с набором байт удобнее, чем с сырым указателем... Тем более же они в какой-то версии "мамой клянулись", что ускорили работу с динамическими массивами.
3 дек 18, 12:45    [21751928]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить