Всем доброго времени суток. Проблема в следующем - есть лог, одной программы от мини-атс. Она сохраняет данные в dbf файл. Файл имеет следующую структуру | Цитата | Файл C:\Calls.dbf Индекс:IND Инд. выражение: 0. Date, Date, FieldDefs.Items[i].Size=0 Fields[i].DataSize=4 1. Time, String, FieldDefs.Items[i].Size=11 Fields[i].DataSize=12 2. Dlit, String, FieldDefs.Items[i].Size=11 Fields[i].DataSize=12 3. In_Num, String, FieldDefs.Items[i].Size=20 Fields[i].DataSize=21 4. Ext_Line, String, FieldDefs.Items[i].Size=20 Fields[i].DataSize=21 5. Phone_Num, String, FieldDefs.Items[i].Size=40 Fields[i].DataSize=41 6. Bill_Code, String, FieldDefs.Items[i].Size=20 Fields[i].DataSize=21 7. Cost, String, FieldDefs.Items[i].Size=20 Fields[i].DataSize=21 8. Dir, String, FieldDefs.Items[i].Size=20 Fields[i].DataSize=21 9. Place, String, FieldDefs.Items[i].Size=20 Fields[i].DataSize=21 10. Prop_1, String, FieldDefs.Items[i].Size=20 Fields[i].DataSize=21 11. Prop_2, String, FieldDefs.Items[i].Size=20 Fields[i].DataSize=21 12. Calc, String, FieldDefs.Items[i].Size=20 Fields[i].DataSize=21
|
Данные получаю при помощи | Код | procedure MyDisplay(); var i,ii: Integer; F: TFieldDef; Ln,D: String; begin Form1.Table1.Active := True; //-------------------------------- // имена полей Form1.ComboBox2.Items.Clear; for ii := 0 to Form1.table1.Fields.Count-1 do begin Form1.ComboBox2.Items.Add(Form1.Table1.Fields[ii].DisplayLabel); end; Form1.ComboBox2.ItemIndex:=0; //-------------------------------- Form1.Table1.GetIndexNames(Form1.ComboBox1.Items); Form1.ComboBox1.Items.Add('No Index'); Form1.ListBox1.Items.Add(' ФАЙЛ '+ Trim(Form1.MaskEdit1.Text)); if (Form1.ComboBox1.Items.Count <> -1)and(Form1.ComboBox1.Items[0] <> 'No Index') then begin for i:=0 to Form1.ComboBox1.Items.Count-2 do begin Form1.ListBox1.Items.Add(' Индекс:'+Form1.ComboBox1.Items[i]); Form1.ListBox1.Items.Add(' Инд.выражение:'+Form1.Table1.IndexDefs.Items[i].Expression); end; end; with Form1.Table1 do begin for i := 0 to FieldDefs.Count - 1 do begin F := FieldDefs.Items[i]; case F.DataType of ftUnknown: D := 'Unknown'; ftString: D := 'String'; ftSmallint: D := 'SmallInt'; ftInteger: D := 'Integer'; ftWord: D := 'Word'; ftBoolean: D := 'Boolean'; ftFloat: D := 'Float'; // а надо ftBytes ftCurrency: D := 'Currency'; ftBCD: D := 'BCD'; ftDate: D := 'Date'; ftTime: D := 'Time'; ftDateTime: D := 'DateTime'; ftBytes: D := 'Bytes'; ftVarBytes: D := ''; ftBlob: D := 'BLOB'; ftMemo: D := 'Memo'; ftGraphic: D := 'Graphic'; else D := ''; Ln:='' end; Ln := 'FieldDefs.Items[i].Size='+ IntToStr(FieldDefs.Items[i].Size); Ln := Ln+' Fields[i].DataSize='+IntToStr(Fields[i].DataSize); Form1.ListBox1.Items.Add(' '+IntToStr(i)+'. '+F.Name + ', ' + D+', '+Ln); end; end; //Form1.Table1.Active := False; end;
procedure TForm1.SpeedButton1Click(Sender: TObject); begin Form1.ListBox1.Items.Clear; Form1.ComboBox1.Items.Clear; Form1.ComboBox1.Items.Add('No Index'); If Length(Table1.TableName)<>0 then begin Table1.Active:=False; end; If OpenDialog1.Execute then begin if Length(Opendialog1.Files[0])<>0 then begin Table1.TableName:=Opendialog1.FileName; // Table1.TableName:= MaskEdit1.Text:= Table1.TableName; MyDisplay(); end; end; end;
|
Всё работает, всё здорово. Проблема в том, что когда начинаешь перемещаться по записям - выдаётся ошибка Translate Error. Value out of bounds. В чём может быть проблема? PS: Система Delphi 7
--------------------
Подпись >> /dev/null
|