|
|
|
Адекватность TStreamAdapter
|
|||
|---|---|---|---|
|
#18+
Есть такой стандартный метод Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. вопрос, насколько правильна выделенная строка? Не должно ли там быть так Код: pascal 1. Вопрос возник отсюда. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. WriteBitmap COM'овский метод в другой dll LBitmap.SaveToStream(LOStrm); вылетает с ошибкой "Неверный указатель" потому, что здесь Код: pascal 1. 2. 3. 4. 5. 6. передается массив нулевой длины. Или ошибка здесь? Код: pascal 1. 2. 3. 4. Может должно быть так? Код: pascal 1. 2. 3. 4. 5. 6. 7. С уважением, Vasilisk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 22:11 |
|
||
|
Адекватность TStreamAdapter
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_вопрос, насколько правильна выделенная строка? Не должно ли там быть так На мой вкус ее вообще не должно быть. TStreamAdapter - просто интерфейсная прокладка, которая не должна заниматься самодеятельностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 22:17 |
|
||
|
Адекватность TStreamAdapter
|
|||
|---|---|---|---|
|
#18+
Если почитать первоисточник... https://docs.microsoft.com/en-us/windows/desktop/api/objidl/nf-objidl-isequentialstream-write pv - A pointer to the buffer that contains the data that is to be written to the stream. A valid pointer must be provided for this parameter even when cb is zero. cb - The number of bytes of data to attempt to write into the stream. This value can be zero. т.е. реализатор обязан адекватно реализовать методы интерфейса так, как это ожидают все. Ничто не мешает вместо TStreamAdapter использовать свой реализатор IStream. Точно также ничето не мешает заменить TOleStream на свой враппер над TStream ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 23:14 |
|
||
|
Адекватность TStreamAdapter
|
|||
|---|---|---|---|
|
#18+
Кстати... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. CreateStreamOnHGlobal вернет в Rez S_OK т.е. все в порядке, записал 0 байт. Ошибки нет. А по поводу массива нулевой длинны Код: pascal 1. 2. 3. 4. 5. 6. 7. Все норм, ошибок нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 23:32 |
|
||
|
Адекватность TStreamAdapter
|
|||
|---|---|---|---|
|
#18+
X-CiteА по поводу массива нулевой длинны Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 09:56 |
|
||
|
Адекватность TStreamAdapter
|
|||
|---|---|---|---|
|
#18+
X-CiteA valid pointer must be provided for this parameter even when cb is zero.Значит правим TOleStreamX-Cite Код: pascal 1. Все норм, ошибок нет.Это для TStream. Ошибка будет здесь Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 15:56 |
|
||
|
Адекватность TStreamAdapter
|
|||
|---|---|---|---|
|
#18+
Извините, проблема немного не здесь _Vasilisk_LBitmap.SaveToStream(LOStrm); вылетает с ошибкой "Неверный указатель" потому, что здесь Код: pascal 1. 2. 3. 4. 5. 6. передается массив нулевой длины.Тут массив передается ненулевой длины. Тут ColorCount = 0. А потом нарываемся на кривую реализацию TStream.WriteBuffer в XE3 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 16:00 |
|
||
|
Адекватность TStreamAdapter
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Хм... нафига там копирование?... В 10.2 там уже нет никакого копирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 16:45 |
|
||
|
Адекватность TStreamAdapter
|
|||
|---|---|---|---|
|
#18+
alekcvpнафига там копирование? http://www.sql.ru/forum/1145705/tstream-readbuffer-writebuffer ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 16:50 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=86&tid=2039989]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
77ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 368ms |

| 0 / 0 |
