Текущий архив: 2007.03.18;
Скачать: CL | DM;
Вниз
два способа чтение из памяти Найти похожие ветки
← →
koha © (2007-02-22 19:19) [0]Методом 1 копируется ресурс без проблем, а вторым методом нехочет?
Посути почти одно и тоже.Var
RSRC : THandle;
HRSRC: THandle;
1)RSRC := FindResource(HInstance,"lst",RT_RCDATA);
SizeRes := SizeOfResource(HInstance, RSRC);
HRSRC:=LoadResource(HInstance,RSRC);
LockResource(HRSRC);
Move(Pointer(HRSRC)^,Buff,SizeRes);
mm.Lines.Add(StrPas(Buff));
2)RSRC := FindResource(HInstance,"lst",RT_RCDATA);
SizeRes := SizeOfResource(HInstance, RSRC);
Move(Pointer(HRSRC)^,Buff,SizeRes);
mm.Lines.Add(StrPas(Buff));
← →
koha © (2007-02-22 19:23) [1]Сорри, второй метод был с опечаткой -> исправил.
2)
RSRC := FindResource(HInstance,"lst",RT_RCDATA);
SizeRes := SizeOfResource(HInstance, RSRC);
Move(Pointer(RSRC)^,Buff,SizeRes);
mm.Lines.Add(StrPas(Buff));
← →
Джо © (2007-02-22 19:30) [2](1) и (2) — совсем НЕ одно и то же.
← →
Джо © (2007-02-22 19:31) [3]FindResource НЕ возвращает указатель на область памяти.
← →
koha © (2007-02-22 19:35) [4]
> FindResource НЕ возвращает указатель на область памяти.
- а что он вернул? и еще чтобы вторым методом считать нужно ли выделять память?
← →
koha © (2007-02-22 19:40) [5]я бы конечно разобрал как работает LoadResource, но она внешняя из kernel32 а не из unita.
← →
Джо © (2007-02-22 19:42) [6]> [5] koha © (22.02.07 19:40)
> я бы конечно разобрал как работает LoadResource, но она
> внешняя из kernel32 а не из unita.
Читай справку или MSDN, что ж вслепую тыкаться-то?
← →
Джо © (2007-02-22 19:43) [7]FindResource Function
If the function succeeds, the return value is a handle to the specified resource"s information block. To obtain a handle to the resource, pass this handle to the LoadResource function.
LoadResource Function
If the function succeeds, the return value is a handle to the data associated with the resource.
← →
koha © (2007-02-22 19:49) [8]> Читай справку или MSDN
- это то понятно, но реальный код по винтикам разобрать гораздо приятней :-)
← →
Джо © (2007-02-22 19:50) [9]> [8] koha © (22.02.07 19:49)
> - это то понятно
Тогда непонятно, откуда мог взяться код (2)
:-)
← →
koha © (2007-02-22 20:05) [10]> Тогда непонятно, откуда мог взяться код (2)
так эксперемент.
Разбирал код класса TResourceStream, нашел процедуру инициализации посмотрел другие TStream пришел к мнению, что они сперва при инициализации копируют нужный кусок памяти и устанавливают на него глобальный указатель а за тем уже с ним работают. Вот идея радилась, а что если сразу без копирования в глобальную память скопировать сразу в свой буффер - пока не выходит.
← →
Джо © (2007-02-22 20:16) [11]> [10] koha © (22.02.07 20:05)
пока не выходит.
И что, текст из [7] ни на какие раздумия не навел? :)
← →
koha © (2007-02-22 20:22) [12]
> И что, текст из [7] ни на какие раздумия не навел? :)
- да навел, признаюсь тупил...
Страницы: 1 вся ветка
Текущий архив: 2007.03.18;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.031 c