| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
Tors Активный
Зарегистрирован: 16.11.2006 Сообщения: 25 Откуда: Харьков
|
Добавлено: Пт Ноя 17, 2006 3:57 pm Заголовок сообщения: Сохранить граф в файл(Delphi) |
|
|
Не получается корректно сохранить граф в файл из приложения на делфи,
при открытии полученного файла в графэдите пишет
не могу сконструировать граф из этого файла :
procedure TAudioConverter.SaveGraphToFile(FileName:PWideChar);
var
wszStreamName:PWideChar;
pStorage:IStorage;
hr:HRESULT;
pStream:IStream;
pPersist:IPersistStream;
wszPath:PWideChar;
begin
wszStreamName:='AudioConverterGraph';
wszPath:=FileName;
hr:=StgCreateDocfile(wszPath,STGM_CREATE or STGM_TRANSACTED or STGM_READWRITE or STGM_SHARE_EXCLUSIVE, 0, pStorage);
if FAILED(hr) then
begin
end;
hr:=pStorage.CreateStream(wszStreamName,STGM_WRITE or STGM_CREATE or STGM_SHARE_EXCLUSIVE, 0, 0,pStream);
if FAILED(hr) then
begin
end;
hr:=GraphBuilder.QueryInterface(IID_IPersistStream, pPersist);
if FAILED(hr) then
begin
hr:=999;
end;
hr:=pPersist.Save(pStream, TRUE);
//pStream._Release;
//pPersist._Release;
if SUCCEEDED(hr) then
begin
hr:=pStorage.Commit(STGC_DEFAULT);
if FAILED(hr) then
begin
end;
end;
//pStorage._Release();
end;
на билдере подобный код работает нормально
в чем грабли? |
|
| Вернуться к началу |
|
 |
WondeRu Главвред :)

Зарегистрирован: 30.10.2006 Сообщения: 199 Откуда: Самара
|
Добавлено: Вт Ноя 21, 2006 1:08 pm Заголовок сообщения: |
|
|
Попробуй так:
| Код: | function saveGRF(fichier:widestring;fg:IFilterGraph):Boolean;
var hr:Hresult;
pStorage:IStorage;
pStream:IStream;
pPersist:IPersistStream;
begin
result:=false;
try
try
hr:= StgCreateDocfile(pwidechar(fichier),STGM_CREATE or STGM_TRANSACTED or STGM_READWRITE or STGM_SHARE_EXCLUSIVE,0, pStorage);
if FAILED(hr) then exit;
hr:= pStorage.CreateStream('ActiveMovieGraph',STGM_WRITE or STGM_CREATE or STGM_SHARE_EXCLUSIVE,0, 0, pStream);
if FAILED(hr) then exit;
fg.QueryInterface(IPersistStream,pPersist);
hr:= pPersist.Save(pStream, TRUE);
if FAILED(hr) then exit;
pStorage.Commit(STGC_DEFAULT);
if FAILED(hr) then exit;
result:=true;
except
end;
finally
pStorage:=nil;
pStream:=nil;
pPersist:=nil;
end;
end; |
|
|
| Вернуться к началу |
|
 |
WondeRu Главвред :)

Зарегистрирован: 30.10.2006 Сообщения: 199 Откуда: Самара
|
Добавлено: Вт Ноя 21, 2006 1:10 pm Заголовок сообщения: |
|
|
Ну и в догонку загрузка графа из grf:
| Код: |
function loadGRF(fichier:widestring;fg:TFiltergraph):Boolean;
var hr:HResult;
pStorage:IStorage;
pPersist:IPersiststream;
pStream:IStream;
begin
result:=false;
try
try
if StgIsStorageFile(pwidechar(fichier))<>S_Ok then exit;
hr:= StgOpenStorage(pwidechar(fichier), nil, STGM_TRANSACTED or STGM_READ or STGM_SHARE_DENY_WRITE,0, 0, pStorage);
if FAILED(hr) then exit;
hr:=fg.QueryInterface(IPersistStream,pPersist);
if FAILED(hr) then exit;
hr:= pStorage.OpenStream('ActiveMovieGraph', 0, STGM_READ or STGM_SHARE_EXCLUSIVE, 0, pStream);
if FAILED(hr) then exit;
hr:= pPersist.Load(pStream);
if FAILED(hr) then exit;
result:=true;
except
end;
finally
pStorage:=nil;
pStream:=nil;
pPersist:=nil;
end;
end;
|
Источник: http://paul.glagla.free.fr/d8.htm |
|
| Вернуться к началу |
|
 |
|
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|
|
|