Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

Проблема потоков в KOL (Stream2Stream)   Найти похожие ветки 

 
Dentall ©   (2004-01-02 21:33) [0]

Не получается скопировать Stream2Stream когда исходный поток - MemoryStream, а поток назначения - файл. Из файла в файл работает. В чем проблема?


 
Boguslaw   (2004-01-03 00:03) [1]

Probably should been scrolled to the beginning (assume You wrote something to MemoryStream before)
so try :
MemoryStream.Seek(0,spBegin) just before Stream2Stream

Happy New Year !


 
Che   (2004-01-03 14:41) [2]

Скорее всего проблемы с потоком из за позиции. Сужу по себе :)Забываю я про нее... Например надо дописать в конец потока MemoryStream данные из файла

xxxx := NewMemoryStream;
// тут в это xxxx что нибуть пишем
ffff := NewReadFileStream("f.txt");
xxxx.Position :=0; // <- а вот если забыть не заработает
Stream2StreamEx(ffff,xxxx,xxxx.Size);

Всех с НГ.


 
Dentall ©   (2004-01-05 14:11) [3]

Из модуля id3v2.pas (есть на этом сайте - архив Tags.zip). При вызове SaveToFile файл становится 0 длины. Попробовал оба вышеуказыннх совета - не помогло ... :( Привожу кусок кода (для тех кто поленится заглянуть в указанный модуль)


function RebuildFile(const FileName: string; TagData: PStream): Boolean;
var
 Tag: TagInfo;
 Source, Destination: PStream;
 BufferName: string;
begin
 { Rebuild file with old file data and new tag data (optional) }
 Result := false;
 if (not FileExists(FileName)) or (FileSetAttr(FileName, 0) <> 0) then exit;
 if not ReadHeader(FileName, Tag) then exit;
 if (TagData = nil) and (Tag.ID <> ID3V2_ID) then exit;
 try
   { Create file streams }
   BufferName := FileName + "~";
   Source := NewFileStream(FileName, ofOpenRead or ofShareExclusive);
   Destination := NewFileStream(BufferName, ofCreateNew);
   { Copy data blocks }
   if Tag.ID = ID3V2_ID then Source.Seek(GetTagSize(Tag), spBegin);
   if TagData <> nil then Stream2Stream(Destination, TagData, TagData.Size);
//    source.Seek(0,spBegin);
   Stream2Stream(Destination, Source, Source.Size - Source.Position);
   { Free resources }
   Source.Free;
   Destination.Free;
   { Replace old file and delete temporary file }
   if DeleteFile(PChar(FileName)) and MoveFile(PChar(BufferName), PChar(FileName)) then
     Result := true
   else Str2Int("");
 except
   if FileExists(BufferName) then DeleteFile(PChar(BufferName));
 end;
end;

function SaveTag(const FileName: string; Tag: TagInfo): Boolean;
var
 TagData: PStream;
 Iterator, FrameSize: Integer;
begin
 TagData := NewMemoryStream;
 BuildHeader(Tag);
 TagData.Write(Tag, 10);
 for Iterator := 1 to ID3V2_FRAME_COUNT do
   if Tag.Frame[Iterator] <> "" then
   begin
     TagData.WriteStr(ID3V2_FRAME_NEW[Iterator]);
     FrameSize := Swap32(Length(Tag.Frame[Iterator]) + 1);
     TagData.Write(FrameSize, SizeOf(FrameSize));
     TagData.WriteStr(#0#0#0 + Tag.Frame[Iterator]);
   end;
 ///TagData.Seek(0,spBegin);
 //TagData.position:=0;
 Result := RebuildFile(FileName, TagData);
 TagData.Free;
end;


 
mmn   (2004-01-05 16:43) [4]

Только что попробовал использовать метод SaveToFile файла id3v2.pas из архива Audio Tools Library (портированным в KOL Матвеевым Дмитрием). Всё записалось нормально. Если мне не изменяет склероз, то скачал я его с этого сайта.


 
Dentall ©   (2004-01-05 19:26) [5]

Действительно, скачаннная с этого сайта работает :)... Кстати, у нового модуля размер больше...



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

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.056 c
4-1082289411
Torin
2004-04-18 15:56
2004.05.30
Drag&amp;Drop


1-1084625634
Zelius
2004-05-15 16:53
2004.05.30
Вопрос по работе с TdxTreeList


14-1083952838
Blackman
2004-05-07 22:00
2004.05.30
Стишок на ночь


6-1082015337
Dmitrij_K
2004-04-15 11:48
2004.05.30
Опять про NETSEND


11-1073682537
mdw
2004-01-10 00:08
2004.05.30
Еще сайт посвященный KOL.