Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-07-2014
Avatar de Ferrari
Ferrari Ferrari is offline
Miembro
 
Registrado: jun 2006
Ubicación: Torreón, México
Posts: 154
Poder: 21
Ferrari Va por buen camino
Cool

Pienso que es lo mas lógico....que pongas tu código y así la comunidad te pueda apoyar.

Saludos
Responder Con Cita
  #2  
Antiguo 09-07-2014
Valee Valee is offline
Miembro
NULL
 
Registrado: jul 2014
Posts: 19
Poder: 0
Valee Va por buen camino
El error me lo tira en el procedimiento de abrir método, pero solo cuando listo. Acá les dejo el código de la librería y del listado

La Libreria principal:

Código Delphi [-]
unit LibreriaArchivosEnlace;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, Banderas_Imagen;
const
  _RutaArchivo= 'C:\Users\Valee\Desktop\TPO\';
  _ArchivoDatos= 'Paises.dat';
  _ArchivoControl= 'Paises.con';
  _ArchivoBanderas= 'Banderas.dat';
  _PosNula= -1;
  _ClaveNula= 'A00';
  _CantidadMaxima= 32;
  _Torneo= 2014;
  _Nulo= 0;

type
  TipoMensaje= 0..20;
  TipoBandera= 1..32;
  Cadena= string [15];
  TipoPosicion= longint;
  TipoCantidad= integer;
  TipoClave= string[3];
  TipoPuesto= 0..8;
  TipoGrupos= 'A'..'H';
  TipoRegDatos= record
                  Clave: TipoClave;
                  Pais: Cadena;
                  Puesto_Anterior: TipoPuesto;
                  Bandera: TImage;
                  Enlace: TipoPosicion;
                end;
  TipoArchivoDatos= file of TipoRegDatos;


  TipoRegControl= record
                    Primero: TipoPosicion;
                    Ultimo: TipoPosicion;
                    Cantidad: TipoCantidad;
                    Cantidad_Grupos: TipoGrupos;
                    Editable: Boolean;
                    Borrado: TipoPosicion;
                  end;
  TipoArchivoControl= file of TipoRegControl;

  TipoRegBandera = record
                    Nombre: Cadena;
                    Imagen: TImage;
                    Numero: TipoBandera;
                   end;

  TipoArchivoBandera = file of TipoRegBandera;


  TipoMe= record
            B: TipoArchivoBandera;
            D: TipoArchivoDatos;
            C: TipoArchivoControl;
          end;
var
  Me:TipoMe;

Procedure CrearMe (var Me: TipoMe);
Procedure AbrirMe (var Me: TipoMe);
Procedure CerrarMe (var Me: TipoMe);
Procedure CapturarMe (var Me: TipoMe; pos:TipoPosicion; var RD: TipoRegDatos);
Procedure ModificarMe (var Me: TipoMe; pos: TipoPosicion; RD: TipoRegDatos);
Procedure Insertar (var Me:TipoMe; RD: TipoRegDatos; posicion: TipoPosicion);
Procedure Eliminar (var Me: TipoME; posicion: TipoPosicion);
function Buscar(Var Me:TipoMe; Clave:TipoClave; Var PosAnterior:TipoPosicion):Boolean;
Function MeVacio (var Me: TipoMe):boolean;
Function Primero (var Me: TipoMe):TipoPosicion;
Function Ultimo (var Me: TipoMe):TipoPosicion;
Function Proximo (var Me: TipoMe; pos: TipoPosicion): TipoPosicion;
Function Cant_elem (var Me: TipoMe): TipoCantidad;
//Function BuscarBandera (var Me:TipoMe; Pais: cadena): TImage;

implementation

Procedure CrearMe (var Me: TipoMe);
var
  RC: TipoRegControl;
  RB: TipoRegBandera;
begin
  assign (Me.B,_RutaArchivo+_ArchivoBanderas);
  assign (Me.D,_RutaArchivo+_ArchivoDatos);
  assign (Me.C,_RutaArchivo+_ArchivoControl);
  {$I-}
  reset (Me.D);
  If (IORESULT <> 0)
  then
    rewrite (Me.D);
  reset (Me.C);
  If (IORESULT <> 0)
  then
    begin
      rewrite (Me.C);
      RC.Primero:= _PosNula;
      RC.Ultimo:= _PosNula;
      RC.Borrado:= _PosNula;
      RC.Cantidad:= _Nulo;
      write (Me.C,RC);
    end;
  reset (Me.B);
  If (IORESULT <> 0)
  then
    begin
      rewrite (Me.B);
      while RB.Numero <= _CantidadMaxima do
        begin
          case RB.Numero of
            1: begin
                RB.Nombre:= 'Japon';
                RB.Imagen:= Form4.Image1;
               end;
            2: begin
                RB.Nombre:= 'Italia';
                RB.Imagen:= Form4.Image2;
               end;
            3: begin
                RB.Nombre:= 'Iran';
                RB.Imagen:= Form4.Image3;
               end;
            4: begin
                RB.Nombre:= 'Inglaterra';
                RB.Imagen:= Form4.Image4;
               end;
            5: begin
                RB.Nombre:= 'Honduras';
                RB.Imagen:= Form4.Image5;
               end;
            6: begin
                RB.Nombre:= 'Grecia';
                RB.Imagen:= Form4.Image6;
               end;
            7: begin
                RB.Nombre:= 'Ghana';
                RB.Imagen:= Form4.Image7;
               end;
            8: begin
                RB.Nombre:= 'Francia';
                RB.Imagen:= Form4.Image8;
               end;
            9: begin
                RB.Nombre:= 'España';
                RB.Imagen:= Form4.Image9;
               end;
            10: begin
                RB.Nombre:= 'EEUU';
                RB.Imagen:= Form4.Image10;
               end;
            11: begin
                RB.Nombre:= 'Chile';
                RB.Imagen:= Form4.Image11;
               end;
            12: begin
                RB.Nombre:= 'Argelia';
                RB.Imagen:= Form4.Image12;
               end;
            13: begin
                RB.Nombre:= 'Colombia';
                RB.Imagen:= Form4.Image13;
               end;
            14: begin
                RB.Nombre:= 'Argentina';
                RB.Imagen:= Form4.Image14;
               end;
            15: begin
                RB.Nombre:= 'Corea del Sur';
                RB.Imagen:= Form4.Image15;
               end;
            16: begin
                RB.Nombre:= 'Australia';
                RB.Imagen:= Form4.Image16;
               end;
            17: begin
                RB.Nombre:= 'Costa de Marfil';
                RB.Imagen:= Form4.Image17;
               end;
            18: begin
                RB.Nombre:= 'Belgica';
                RB.Imagen:= Form4.Image18;
               end;
            19: begin
                RB.Nombre:= 'Costa Rica';
                RB.Imagen:= Form4.Image19;
               end;
            20: begin
                RB.Nombre:= 'Bosnia';
                RB.Imagen:= Form4.Image20;
               end;
            21: begin
                RB.Nombre:= 'Alemania';
                RB.Imagen:= Form4.Image21;
               end;
            22: begin
                RB.Nombre:= 'Croacia';
                RB.Imagen:= Form4.Image22;
               end;
            23: begin
                RB.Nombre:= 'Brasil';
                RB.Imagen:= Form4.Image23;
               end;
            24: begin
                RB.Nombre:= 'Camerun';
                RB.Imagen:= Form4.Image24;
               end;
            25: begin
                RB.Nombre:= 'Ecuador';
                RB.Imagen:= Form4.Image25;
               end;
            26: begin
                RB.Nombre:= 'Holanda';
                RB.Imagen:= Form4.Image26;
               end;
            27: begin
                RB.Nombre:= 'Mexico';
                RB.Imagen:= Form4.Image27;
               end;
            28: begin
                RB.Nombre:= 'Uruguay';
                RB.Imagen:= Form4.Image28;
               end;
            29: begin
                RB.Nombre:= 'Suiza';
                RB.Imagen:= Form4.Image29;
               end;
            30: begin
                RB.Nombre:= 'Rusia';
                RB.Imagen:= Form4.Image30;
               end;
            31: begin
                RB.Nombre:= 'Portugal';
                RB.Imagen:= Form4.Image31;
               end;
            32: begin
                RB.Nombre:= 'Nigeria';
                RB.Imagen:= Form4.Image32;
               end;
          end;
          write (Me.B);
          RB.Numero:= RB.Numero+1;
        end;
    end;
  close (Me.B);
  close (Me.D);
  close (Me.C);
  {$I+}
end;

Procedure AbrirMe (var Me: TipoMe);
begin
  reset (Me.B);
  reset (Me.D);
  reset (Me.C);
end;

Procedure CerrarMe (var Me: TipoMe);
begin
  close (Me.B);
  close (Me.D);
  close (Me.C);
end;

Procedure CapturarMe (var Me: TipoMe; pos:TipoPosicion; var RD: TipoRegDatos);
begin
  seek (Me.D, pos);
  read (Me.D, RD);
  //seek (Me.D, RD.Enlace);
  //read (Me.D, RD);
end;

Procedure ModificarMe (var Me: TipoMe; pos: TipoPosicion; RD: TipoRegDatos);
var
 RDAux: TipoRegDatos;
begin
  seek (Me.D, pos);
  read (Me.D, RDAux);
  seek (Me.D, RDAux.Enlace);
  read (Me.D, RDAux); //VER, CREO QUE ES RD
  RD.Enlace:= RDAux.Enlace;
  seek (Me.D, RDAux.Enlace);
  write (Me.D, RD);
end;

Procedure Insertar (var Me:TipoMe; RD: TipoRegDatos; posicion: TipoPosicion);
var
  RC: TipoRegControl;
  RX, RDAnterior: TipoRegDatos;
  PosNueva: TipoPosicion;
begin
  seek (Me.C, _Nulo); //Lee Archivo Control
  read (Me.C, RC);
  if RC.Borrado= _PosNula //Descolgamos el campo Borrado
  then
    PosNueva:= filesize (Me.D)
  else
    begin
      PosNueva:= RC.Borrado;
      seek (Me.D, PosNueva);
      read (Me.D, RX);
      RC.Borrado:= RX.Enlace;
    end;
  if RC.Primero= _PosNula //Inserto en Me vacio
  then
    begin
      RC.Primero:= PosNueva;
      RC.Ultimo:= PosNueva;
      RD.Enlace:= _PosNula; //Al estar vacio, el enlace queda en -1
    end
  else
    if posicion= _PosNula // Insertar al principio
    then
      begin
        RD.Enlace:= RC.Primero;
        RC.Primero:= PosNueva;
      end
    else
      if posicion= RC.Ultimo //Incertar al final
      then
        begin
          RD.Enlace:= _PosNula;
          seek (Me.D, Posicion);
          read (Me.D, RDAnterior);
          RDAnterior.Enlace:= PosNueva;
          RC.Ultimo:= PosNueva;
        end
      else // Insertar al medio
        begin
          seek (Me.D, posicion);
          read (Me.D, RDAnterior);
          RD.Enlace:= RDAnterior.Enlace;
          RDAnterior.Enlace:= PosNueva;
        end;
  RC.Cantidad:= RC.Cantidad+1;
  seek (Me.C, _Nulo);
  write (Me.C, RC);
  seek (Me.D, PosNueva);
  write (Me.D, RD);
end;

Procedure Eliminar (var Me: TipoME; posicion: TipoPosicion);
var
  RC: TipoRegControl;
  RX,RD: TipoRegDatos;
  PosBorrado: TipoPosicion;
begin
  seek (Me.C, _Nulo); // Leo cabecera
  read (Me.C, RC);
  if posicion= _PosNula
  then
    begin
      if RC.Primero = RC.Ultimo //Elimino y queda Pos vacio
      then
        begin
          PosBorrado:= RC.Primero;
          RC.Primero:= _PosNula;
          RC.Ultimo:= _PosNula;
        end
      else
        begin //Elimino al principio
          PosBorrado:= RC.Primero;
          seek (Me.D, PosBorrado);
          read (Me.D, RX);
          RC.Primero:= RX.Enlace;
        end;
    end
  else
    begin //Elimino al medio o al final
      seek (Me.D, posicion);
      read (Me.D, RD);
      PosBorrado:= RD.Enlace;
      if RD.Enlace= RC.Ultimo //Elimino ultimo elemento
      then
        begin
          RD.Enlace:= _PosNula;
          RC.Ultimo:= posicion;
          seek (Me.D, posicion);
          write (Me.D, RD);
        end
      else
        begin //Elimino al medio
          seek (Me.D, RD.Enlace);
          read (ME.D, RX);
          RD.Enlace:= RX.Enlace;
          seek (Me.D, posicion);
          write (Me.D, RD);
        end;
    end;
  seek (Me.D, PosBorrado); // Insertar al registro en la pila de borrados
  read (Me.D, RD);
  RD.Enlace:= RC.Borrado;
  RC.Borrado:= posicion;
  RC.Cantidad:= RC.Cantidad-1;
  seek (Me.D,_Nulo);
  write (Me.D, RD);
  seek (Me.C,_Nulo);
  write (Me.C, RC);
end;

function Buscar(Var Me:TipoMe;Clave:TipoClave;Var PosAnterior:TipoPosicion):Boolean;
Var
   Enc,Corte:Boolean;
   RC:TipoRegControl;
   RD:TipoRegDatos;
   Primero:Tipoposicion;
Begin
     Seek(Me.C,_Nulo);
     Read(Me.C,RC);
     Enc:=False;
     Corte:=False;
     PosAnterior:=_PosNula;
     Primero:=RC.Primero;
     While (Not Enc) and (Not Corte) and (Primero<>_PosNula) do
     Begin
          Seek(Me.D,Primero);
          Read(Me.D,RD);
          If RD.Clave=Clave Then
                 Enc:=True
              else
                 If RD.Clave > Clave then
                      Corte:=True
                   else
                    Begin
                         PosAnterior:=Primero;
                         Primero:=RD.Enlace;
                    End;
     End;
     Buscar:=Enc;
End;

Function MeVacio (var Me: TipoMe):boolean;
var
  RC: TipoRegControl;
begin
  seek (Me.C, _Nulo);
  read (Me.C, RC);
  if RC.Primero= _PosNula
  then
    MeVacio:= true
  else
    MeVacio:= false;
end;

Function Primero (var Me: TipoMe):TipoPosicion;
var
  RC: TipoRegControl;
begin
  seek (Me.C, _Nulo);
  read (Me.C, RC);
  Primero:= RC.Primero;
end;

Function Ultimo (var Me: TipoMe):TipoPosicion;
var
  RC: TipoRegControl;
begin
  seek (Me.C, _Nulo);
  read (Me.C, RC);
  Ultimo:= RC.Ultimo;
end;

Function Proximo (var Me: TipoMe; pos: TipoPosicion): TipoPosicion;
var
  RD: TipoRegDatos;
begin
  seek (Me.D, pos);
  read (Me.D, RD);
  Proximo:= RD.Enlace;
end;

Function Cant_elem (var Me: TipoMe): TipoCantidad;
var
  RC: TipoRegControl;
begin
  Cant_elem:= RC.Cantidad;
end;

{Function BuscarBandera (var Me:TipoMe; Pais: cadena): TImage;
var
  enc: boolean;
  RB: TipoRegBandera;
  Nro: TipoBandera;
begin
  enc:= false;
  Nro:= 1;
  seek (Me.B, Nro);
  read (Me.B, RB);
  while (not enc) or (Nro= _CantidadMaxima) do
    begin
      seek (Me.B, Nro);
      read (Me.B,RB);
      if RB.Nombre = Pais
      then
          enc:= true
      else
        Nro:= Nro+1;
    end;
  BuscarBandera:= RB.Imagen;
end;  }

end.

Listado que tira error de asignacion de archivo:

unit Listado_Total;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, LOAux, LibreriaArchivosEnlace;

type
  TForm3 = class(TForm)
    Panel1: TPanel;
    ListBox1: TListBox;
    Panel2: TPanel;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
var
  X: TipoPosicion;
  Cant: TipoCantidad;
  RD: TipoRegDatos;
begin
ListBox1.Clear;
AbrirMe (Me);
Cant:= 1;
X:= Primero (Me);
if MeVacio (Me)
then
  MostrarMensaje (11)
else
  begin
    while Cant<= Cant_elem (Me) do
      begin
        CapturarMe (Me,X,RD);
        ListBox1.AddItem('CLAVE: '+ RD.Clave+' PAIS: '+RD.Pais+ inttostr (RD.Puesto_Anterior),ListBox1);
        Cant:= Cant+1;
        X:= Proximo(Me,X);
      end;
  end;
CerrarMe (Me);
end;

end.

Última edición por Neftali [Germán.Estévez] fecha: 09-07-2014 a las 14:28:31. Razón: Colocar Tags
Responder Con Cita
  #3  
Antiguo 09-07-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Valee.

Por favor, cuando incluyas código en tus mensajes usa los TAG's para hacer mas clara la lectura.

Uso:


En cuanto al error, sería muy bueno que hubieras puesto textualmente el mensaje que te arroja, eso circunscribe mucho la búsqueda del mismo.

Pero dado que mencionas que: "salta con un error de asignación de archivos", noto que que en el método TForm3.Button1Click llamas al procedimiento AbrirMe sin llamar previamente a CrearMe, que es donde son asignados los nombres de archivo a las variables de tipo file.

Por otro lado, en Delphi para realizar la asignación de nombres de archivo, no se usa el procedimiento Assign como en Pascal sino AssignFile.

En principio, eso es lo que alcanzo a percibir sobre la causa del error que mencionas. A menos que estes asígnando los archivos en otra parte (no publicada) del código.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 09-07-2014
Valee Valee is offline
Miembro
NULL
 
Registrado: jul 2014
Posts: 19
Poder: 0
Valee Va por buen camino
Hola Ecfisa, el crear método lo creo en el formulario principal, por eso no lo creo antes del abrir método, sino me reescribe y me borra los datos que fueron guardados. El error que me tira es EInOutError I/O error 102.
La carga de los países me lo hace perfecto, por eso no comprendo porque me tira error. Si puede abrir el método cuando se carga porque no se puede abrir cuando se muestra¿?

Última edición por Valee fecha: 26-08-2014 a las 18:29:01.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Saber cuando se abre un archivo angelp4492 Varios 0 16-06-2014 17:45:15
se abre el cpu de delphi y se clava el programa ! gaston260 ASM y Microcontroladores 7 26-02-2009 02:56:25
Club Delphi abre una tienda Emilio La Taberna 62 26-08-2006 08:52:55
Delphi abre una hoja excel jgutti Servers 0 19-11-2004 14:00:33
Delphi vs XP ... No abre las tablas ingel Conexión con bases de datos 0 13-06-2003 18:05:44


La franja horaria es GMT +2. Ahora son las 14:43:41.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi