Главная страница
    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.035 c
7-1082477705
tyoma
2004-04-20 20:15
2004.05.30
Поиск установленного ПО


3-1083837941
denis24
2004-05-06 14:05
2004.05.30
Помогите с запросом


7-1082465885
e_Alex
2004-04-20 16:58
2004.05.30
Блокировка формы


3-1083844364
kas
2004-05-06 15:52
2004.05.30
Как получить список MSSQL-серверов, зарегистрированных в сети


7-1082463805
YuRock
2004-04-20 16:23
2004.05.30
Доступ к COM порту по сети





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский