Текущий архив: 2004.02.17;
Скачать: CL | DM;
Вниз
Подскажите в чём у меня ошибка - сам понять не могу. Найти похожие ветки
← →
Lucifer (2004-02-05 12:50) [0]with Data.Table do begin
for i:=0 to Cnt-1 do begin
MStream:=TMemoryStream.Create;
(FindComponent("EA"+inttostr(i+1)) as TEA).Edit.Lines.SaveToStream(MStream);
Active:=false;
SQL.Clear;
SQL.Add("INSERT INTO Table (idP, Blob, Flag)");
SQL.Add("VALUES (:idP, :Blob, :Flag)");
Params[0].AsInteger:=Data.ParentTbl.Fields[0].AsInteger;
Params[1].LoadFromStream(MStream, ftBlob);
if (FindComponent("EA"+inttostr(i+1)) as TEA).PB.Active then Params[2].AsString:="T" else Params[2].AsString:="F";
Open;
AnswStream.Free;
end;//for i:=0 to AnswerCnt-1 do begin
end;//with Data.TBLAnswer do begin
На стоке:
(FindComponent("EA"+inttostr(i+1)) as TEA).Edit.Lines.SaveToStream(MStream);
выдаёт ошибку доступа (AV).
← →
Sandman25 (2004-02-05 12:57) [1]1. FindComponent вернул nil
2. или вернул адрес объекта, не являющегося (наследником) TEA
← →
Тимохов (2004-02-05 12:58) [2]Компонент у тебя такой не находится просто...
← →
Тимохов (2004-02-05 12:59) [3]
> 2. или вернул адрес объекта, не являющегося (наследником)
> TEA
Тогда была бы ошибка в "as"
← →
Sandman25 (2004-02-05 13:02) [4][3] Тимохов © (05.02.04 12:59)
Согласен. Я обычно использую прямое преобразование, без as. Вот и спутал.
← →
icWasya (2004-02-05 13:04) [5]лучше делай так
var
EA:TEA;Component:TComponent Absolute EA;
...
for i:=0 to Cnt-1 do begin
C:=FindComponent("EA"+inttostr(i+1));
if C=Nil then Continue;
if not (C is TEA) then Continue;
//далее по тексту
EA.Edit.Lines.SaveToStream(MStream);
...
← →
Lucifer (2004-02-05 13:49) [6]Спасибо. Попробую.
Страницы: 1 вся ветка
Текущий архив: 2004.02.17;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.009 c