Показать сообщение отдельно
  #12  
Старый 01.03.2008, 14:46
jmrl11 jmrl11 вне форума
Прохожий
 
Регистрация: 29.02.2008
Сообщения: 7
Репутация: 10
По умолчанию

Код:
RangeMatrix : Variant
...

RangeMatrix := XLApp.Range['A1',XLApp.Cells.Item[X,Y]].Value2;
repeat
    for R := 1 to Y do
      StringGrid1.Cells[(R),(K)] := RangeMatrix[K,R];
      Inc(K,1);
    StringGrid1.RowCount := K + 1;
  until
   K > X;
Сопоставляем матрицу WorkSheet с нашей Delphi матрицей и определяем цикл для заполнения TStringGrid. В результате имею заполенный StringGrid1 данными листа и хочу преобразовать данные в простой одномерный массив целочисленного типа (все данные целые числа).
Код:
...
OM[1]:= strtoint(StringGrid1.Cells[(1),(1)]);
...
Материться по поводу не совпадения типов. Если пытаюсь преобразовать сразу variant в integer c помощью:

Код:
function VarToInt(var AVariant: variant; DefaultValue: integer = 0): integer;
begin
   Result := DefaultValue;
  if VarIsNull(AVariant) then
    Result := 0
  else
    if VarIsOrdinal(AVariant) then
      Result := StrToInt(VarToStr(AVariant));
end;

Код:
...
OM[i]:=VarToInt(RangeMatrix[K,R]);
...
 
имею тот же результат - типы не совпадают...
Ответить с цитированием