Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

Проблема потоков в 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 вся ветка

Форум: "KOL";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.033 c
6-1081330846
Ozone
2004-04-07 13:40
2004.05.30
TIdTCPClient


11-1074438248
Neznaika
2004-01-18 18:04
2004.05.30
MHLame для Delphi6


6-1081767324
Сережа550
2004-04-12 14:55
2004.05.30
Текущий URL


6-1081410897
Aleksandr
2004-04-08 11:54
2004.05.30
Кто решал проблему разницы во времени между двумя компьютерами?


3-1083650137
TankMan
2004-05-04 09:55
2004.05.30
Что делать со скроллингом в DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский