Вверх ↑
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
#1: 2006-01-27 02:16:00 ЛС | профиль | цитата
Вот вроде просто все:

#pas
procedure THIMemoryStream._work_doCopy;
var St:PStream;
begin
_prop_Stream.Position := 0;
St := ReadStream(_data,_data_SrcStream,nil);
if St <> nil then
Stream2Stream(_prop_Stream,St,St.Size);
end;
Раз начинаем с нуля, значит старое забываем.
Вот только размер никто не подправил.
А значит в своей схеме я должен делать предварительно doClear.
Ну и зачем тогда сделано _prop_Stream.Position := 0

Думаю, что вместо этого надо делать _prop_Stream.Size := 0
карма: 9

0
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2006-01-27 03:49:00 ЛС | профиль | цитата
Исправлено
карма: 27
0
Ответов: 9906
Рейтинг: 351
#3: 2006-01-28 12:47:59 ЛС | профиль | цитата
Да, вот еще:
1) в CodeGen игнорируется случай пустого св-ва Stream, с катастрофичными результатами:

#pas
function SaveParam(..........):string;
var k:string;
rs:PChar;
begin
k := '';
with pr^ do
case DataType of
......
data_stream,data_jpeg:
begin
rs := cgt.resAddStream(pr);
if Assigned(rs) then
k := 'LoadResStream(''' + rs + ''')'
else k := 'NewMemoryStream'; //!!! Добавил пока эту строку - ее не было
end;
......
end;
if InsertPropName and(k <> '') then
Result := '_prop_' + pr.Name + ' := ' + k
else Result := k;
end;
2) вспоминая существование динамических контейнеров, деструктор ему нужен. Надо полагать что-то типа такого:

#pas
destructor THIMemoryStream.Destroy;
begin
_prop_Stream.Free;
inherited;
end;
карма: 9

0
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2006-01-31 02:15:00 ЛС | профиль | цитата
Обе правки внесены.
карма: 27
0
Ответов: 4630
Рейтинг: 749
#5: 2010-09-06 12:54:31 ЛС | профиль | цитата
У меня вопрос по кодогенератору FTCG. Можно ли в кодогенераторе получить свойства типа data_stream, data_icon? Идея такова: хранить некоторые файлы внутри схемы, а во время компиляции распаковывать во временную папку или обрабатывать и помещать в целевой код (для этого хочу сделать свой метод в кодогенераторе). Предполагаю, это можно сделать функцией cgt.propGetValue, только я не знаю что она выдает в случае с этими типами. Кстати, если FTCG-компонент имеет свойство типа data_stream, схема с таким компонентом не хочет компилироваться. Помогите, кто чем может.
карма: 26

0
Администрация
Ответов: 15295
Рейтинг: 1519
#6: 2010-09-06 13:20:30 ЛС | профиль | цитата
для обработки св-тв используется метод _readCustomProperty, описываемый в direct.inc. Пример можно посмотреть в пакете PDA
карма: 27
0
Ответов: 4630
Рейтинг: 749
#7: 2010-09-06 13:45:42 ЛС | профиль | цитата
1. PDA - это PocketPC? В его codegen.dpr не нашел упоминания о readCustomProperty.
2. Судя по codegen.dpr других пакетов переменной readCustomProperty присваивается пользовательская функция чтения. Тогда:
- что я получу, читая свойства типа data_stream, data_icon (указатели на какие типы, или хэндлы и т.д.)?
- как быть с этим
Netspirit писал(а):
если FTCG-компонент имеет свойство типа data_stream, схема с таким компонентом не хочет компилироваться

карма: 26

0
Администрация
Ответов: 15295
Рейтинг: 1519
#8: 2010-09-06 14:05:03 ЛС | профиль | цитата
Netspirit писал(а):
PDA - это PocketPC?

нет

Netspirit писал(а):
В его codegen.dpr не нашел упоминания о readCustomProperty

при чем тут codegen.dpr?

Повторю с выделением главного:
Dilma писал(а):
для обработки св-тв используется метод _readCustomProperty, описываемый в direct.inc Пример можно посмотреть в пакете PDA


Netspirit писал(а):
что я получу, читая свойства типа data_stream, data_icon (указатели на какие типы, или хэндлы и т.д.)?

Класс Custom - таблица снизу

Netspirit писал(а):
как быть с этим

расшифровать фразу "не хочет компилироваться"
карма: 27
1
Голосовали:Netspirit
Ответов: 4630
Рейтинг: 749
#9: 2010-09-06 14:19:31 ЛС | профиль | цитата
При нажатии "Компилировать" выдает runtime error. Только, извиняюсь, я не совсем разобрался, почему так происходит. А происходит это, если у компонента есть свойство с названием Icon и типом Stream.
------------ Дoбавленo в 14.19:
Dilma писал(а):
Повторю с выделением главного

Да понял я, просто я про пакет PDA никогда не слышал, а SVN не пользуюсь.
карма: 26

0
Администрация
Ответов: 15295
Рейтинг: 1519
#10: 2010-09-06 15:00:26 ЛС | профиль | цитата
Netspirit писал(а):
При нажатии "Компилировать" выдает runtime error.

объявление одного только свойства любого типа в любом элементе пакета FTCG не может приводить к runtime error потому, что кодогенератор обращается к ним только по запросу из скриптов. Поэтому это
Netspirit писал(а):
выдает runtime error

не является следствием этого
Netspirit писал(а):
Кстати, если FTCG-компонент имеет свойство типа data_stream

карма: 27
0
Ответов: 4630
Рейтинг: 749
#11: 2010-09-06 15:09:22 ЛС | профиль | цитата
Говорю, не разобрался. Причина в этом
Netspirit писал(а):
у компонента есть свойство с названием Icon и типом Stream

------------ Дoбавленo в 15.09:
Если изменить название свойства - всё нормально.
карма: 26

0
Администрация
Ответов: 15295
Рейтинг: 1519
#12: 2010-09-06 15:21:07 ЛС | профиль | цитата
Netspirit писал(а):
А происходит это, если у компонента есть свойство с названием Icon и типом Stream.

не заметил... Св-во Icon главного элемента проекта любого пакета отвечает за иконку результирующего исполняемого файла. Ф-ал встроен в среду и отключить это никак не возможно
карма: 27
0
Ответов: 4630
Рейтинг: 749
#13: 2010-09-06 15:24:51 ЛС | профиль | цитата
Спасибо, буду знать. Обзову свойство по-другому.
карма: 26

0
Ответов: 4630
Рейтинг: 749
#14: 2010-09-17 12:22:18 ЛС | профиль | цитата
Опять требуется помощь. Dilma, сделал вот такой код:
code_20643.txt

Если не трудно, посмотри в чем ошибки. Правильный ли подход? Идея в том, чтобы сохранить Stream в файл.
карма: 26

0
файлы: 1code_20643.txt [1KB] [621]
Администрация
Ответов: 15295
Рейтинг: 1519
#15: 2010-09-17 12:27:45 ЛС | профиль | цитата
Netspirit, на вопрос
Netspirit писал(а):
что я получу, читая свойства типа data_stream, data_icon (указатели на какие типы, или хэндлы и т.д.)?

была дана ссылка на статью с указанием конкретного места в ней, которую следовало изучить
карма: 27
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)