PDA

Ver la Versión Completa : Error Out Of Memory en delphi


pmtzg
06-06-2008, 17:23:22
uan pregunta compañeros haber si alguno de ustedes les ha pasado lo siguiente:

estoy haciendo un transpaso de bases de datos de :
Paradox a Delphi con el siguiente codigo :


Table1.First;
while not Table1.Eof dobegin
// Agregas registro en blanco
zt2.Append;
// Copias valores de los campos
for i := 0 to Table1.Fields.Count -1 do
zt2.Fields[i].Value := Table1.Fields[i].Value;
// Guardas el nuevo registro
zt2.Post;
// Avanzas al siguinete registro de la tabla origen
Table1.Next;end;

tengo 1 tabla de paradox que cuenta con 604.330 registrosy cuando estoy corriendo la aplicación llega has el 44%
y me lanza el siguiente error:
miaplicacion.exe raised exeption class EoutOfMemory whith messageOut Of Memory
Process Stopped estoy usando delphi 7 , firebird 2.1
y el componente que uso es:MDOantes transporto 7 tablas y pasan correctamente y completas
pero esta tabla es la mas pesada y es ahi donde que queda
alguien me podria dar una orientada que hacer ... Gracias

BlueSteel
06-06-2008, 18:12:04
Hola pmtzg...

estas seguro de esto


estoy haciendo un transpaso de bases de datos de :
Paradox a Delphi con el siguiente codigo :


por que creo que estas realizando un traspaso de tablas Paradox a Firebird por intermedio del delphi :p:D

transporto 7 tablas y pasan correctamente y completas
pero esta tabla es la mas pesada y es ahi donde que queda
alguien me podria dar una orientada que hacer ... Gracias

y por que no lo haces a pulso.... bueno, solo para probar... y seria como traspasar campo por campo... por que puede que el problema sea el contenido de un campo específico

realiza algo así..


With Tabla_Paradox Do
Begin
First;
While Not Eof Do
Begin

Tabla_Firebird.SQL.Clear;
Tabla_Firebird.SQL.Add('Insert Into "Tabla" ("Campo1", "Campo2", ...., "Campon")');
Tabla_Firebird.SQL.Add('Values (:P1, :P2,...:Pn)');
Tabla_Firebird.Params[0].AsString := Tabla_Paradox ['campo1'];
Tabla_Firebird.Params[1].AsInteger := Tabla_Paradox ['campo2'];
Tabla_Firebird.Params[n].AsInteger := Tabla_Paradox ['campon'];
Tabla_Firebird.ExecSQL;
Transactio_Firebird.Commit;
Tabla_Paradox.Next;
End;
End;


Lo anterior esta realizado con tablas de DBase e Interbase,, y me funciona super... prueba este método... por que si el problema es el contenido de un campo, te puede saltar el error correspondiente

Salu2:p:D