Delphi - Como saco este error??

 
Vista:

Como saco este error??

Publicado por felipe (18 intervenciones) el 24/01/2006 02:50:35
Tengo el siguiente problema me sale el siguiente error
List index out of bounds (10) p'ero no entiendo por que!!!
como lo saco a que se refiere?
me sale al tratar de insertar datos a una base de datos..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

este es el codigo

Publicado por felipe (18 intervenciones) el 24/01/2006 02:59:26
unit Unit2 ;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, StdCtrls, Buttons, Db, DBTables;

type
TForm2 = class(TForm)
MainMenu1: TMainMenu;
Inicio1: TMenuItem;
Busqueda1: TMenuItem;
salir1: TMenuItem;
Ayuda1: TMenuItem;
Creditos1: TMenuItem;
GroupBox1: TGroupBox;
BitBtn1: TBitBtn;
Label1: TLabel;
Label2: TLabel;
BitBtn2: TBitBtn;
Label3: TLabel;
BitBtn3: TBitBtn;
Query1: TQuery;
Database1: TDatabase;
Query2: TQuery;
Query3: TQuery;
Query4: TQuery;
Edit1: TEdit;
function Split(input:string;schar:char;s:integer):string;
//function Trim(const S: string): string;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure salir1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.DFM}
function TForm2.Split(input:string;schar:char;s:integer):string;
var
i,n:integer;
schop: string;
begin
n := 1;
for i := 1 to length(input) do
begin
if (input[i] = schar) then
begin
inc(n);
if n = s then
split := schop
else
schop := '';
end
else
schop := schop + input[i];
end;
end;



// boton de carga de archivos buenos
procedure TForm2.BitBtn1Click(Sender: TObject);
var
Texto: TStringList;
a :integer; // xcancelacion
b :String; // tarjeta
c :integer; // numero operacion
d :String; // fecha
e :String; // hora
f :integer; // tipo operacion
g :integer; // num_cancelacion torniquete
h :integer; // estacion
l :integer; // pos
j :integer; // cajero
k :integer; // monto
m :integer; // remanente
i: integer;
cont:integer;
begin
Texto:=TStringList.Create;
Texto.LoadFromFile('C:\Documents and Settings\Felipe\Escritorio\Sistema EFE\export\prueba.txt');
cont:=0;
for i:=0 to 1 do
begin
a :=StrToInt(Split(Texto.Strings[i], ';', 2));
b :=Split(Texto.Strings[i], ';', 3);
c :=StrToInt(Split (Texto.Strings[i], ';', 4));
d :=Split (Texto.Strings[i], ';', 5);
e :=Split(Texto.Strings[i], ';', 6);
f :=StrToInt(Split(Texto.Strings[i], ';', 7));
g :=StrToInt(Split(Texto.Strings[i], ';', 8));
h :=StrToInt(Split(Texto.Strings[i], ';', 9));
l :=StrToInt(Split(Texto.Strings[i], ';', 10));
j :=StrToInt(Split(Texto.Strings[i], ';', 11));
k :=StrToInt(Split(Texto.Strings[i], ';', 12));
m :=StrToInt(Split(Texto.Strings[i], ';', 13));
cont := cont+1;
// carga de datos de archivo con Pos
if ( ( f =6) or (f =7) or (f =8) or (f =9) or (f =10)or (f =11)) then
begin
query1.Close;
query1.Params[0].Value := cont; // numero contador
query1.params[1].Value := b; // numero tarjeta
query1.params[2].Value := c; // numero de operacion
query1.Params[3].value := d; // fecha
query1.Params[4].Value := StrToTime(e); // hora
query1.Params[5].Value := f; // tipo operacion
query1.Params[6].Value := l; // identificacion estacion
query1.Params[7].Value := j; // identificacion pos
query1.Params[8].Value := h; // id caajero
query1.Params[9].Value := k; // monto
query1.Params[10].Value := m; // remanente
query1.ExecSql;
//query1.Open;
end;
// carga de archivos de torniquetes
if ( (f=1) or (f=2)or (f=3)or (f=4) or (f=5))then
begin
query4.close;
query4.Params[0].Value := Cont; // contador
query4.params[1].Value := b; // numero de tarjeta
query4.params[2].Value := c; // numero de operacion
query4.Params[3].value := d; // fecha
query4.Params[4].Value := e; // hora
query4.Params[5].Value := f; // tipo operacion
query4.Params[6].Value := g; // numero de torniquete
query4.Params[7].Value := h; // identificacion de estacion
query4.Params[8].Value := k; // monto
query4.Params[9].Value := m; // Remanente
query4.ExecSql;
//query4.Open;
end;
end;
Texto.Free;

end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:este es el codigo

Publicado por Dr Juzam (821 intervenciones) el 24/01/2006 17:12:46
Ese error aparece cuando te pasas en un índice (por ejemplo, Memo.Lines[10] cuando el memo solo tiene 8 lineas y cosas así). Te recomiendo que pongas un breakpoint al ejecutar el código (haciendo click en el margen izquierdo) y luego presionando F7 (o F8 para saltarte los procedimientos y funciones que son llamados desde el principal), lo que te perimite ir pasando de linea en linea. Así sabrás la linea en concreto en la que aparece el error.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

REMuchas gracias

Publicado por felipe (18 intervenciones) el 24/01/2006 18:51:13
lo solucione era coom tu dices me saltaba un digito que declarar en la consulta.. muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar