Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-05-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Error en OpenDialog

Hola Amigos.

Código Delphi [-]
begin
  if OpenDialog1.Execute then
    Edit1.Text:=OpenDialog1.FileName;

Aqui se habre un OpenDialog y si seleciono un file y le doy open todo marcha como debe ser.Pero si decido cancelar entonces sale un error.
Como se puede evita que si decido cancelar no me de un error.? Que regrese normal al form sin una ventana de error.

Un Saludo.
Responder Con Cita
  #2  
Antiguo 02-05-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Hola amigo [JoseFco], pues no le veo ningún problema a ese code, nos puedes mostrar que error es el que te sale?

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 02-05-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Cita:
Empezado por egostar Ver Mensaje
Hola amigo [JoseFco], pues no le veo ningún problema a ese code, nos puedes mostrar que error es el que te sale?

Salud OS
Aqui esta la ventana que me sale. Esto si decido cancelar el opendialog.

Un Saludo.
Responder Con Cita
  #4  
Antiguo 02-05-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
antes de abrir el archivo agrega esto:

Código Delphi [-]
if FileExists(Edit1.Text) then
   //Abrir el archivo
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #5  
Antiguo 02-05-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Cita:
Empezado por eduarcol Ver Mensaje
antes de abrir el archivo agrega esto:


Código Delphi [-]if FileExists(Edit1.Text) then
//Abrir el archivo

Código Delphi [-]

procedure TForm1.BitBtn1Click(Sender: TObject);
var
   i,j,indice: integer;
  Str: String;
begin
  if OpenDialog1.Execute then
    Edit1.Text:=OpenDialog1.FileName;
    Edit2.Text:=('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>');
    Edit2.Text:=('Load File..................OK !');
  Memo1.Clear;
  //Inicializo las columnas y filas de el stringgrid donde se inicia la escritura
  with TStringList.Create do
    try
      LoadFromFile(Edit1.Text);
      FillChar(Buffer,Sizeof(Buffer),#255);
      for i:= 0 to Count - 1 do
        Insertar(Strings[i],Buffer);
        j:= StrToInt(Label2.caption);
        Str:= EmptyStr;

No veo donde intercalar esa linea eduarcol.

Un Saludo.
Responder Con Cita
  #6  
Antiguo 02-05-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
debes agregar sysutils al uses

Código Delphi [-]

procedure TForm1.BitBtn1Click(Sender: TObject);
var
   i,j,indice: integer;
  Str: String;
begin
  if OpenDialog1.Execute then
    Edit1.Text:=OpenDialog1.FileName;
    Edit2.Text:=('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>');
    Edit2.Text:=('Load File..................OK !');
  Memo1.Clear;
  //Inicializo las columnas y filas de el stringgrid donde se inicia la escritura
  with TStringList.Create do
    try
      if FileExists(Edit1.Text) then
      begin
         LoadFromFile(Edit1.Text);
         FillChar(Buffer,Sizeof(Buffer),#255);
         for i:= 0 to Count - 1 do
           Insertar(Strings[i],Buffer);
           j:= StrToInt(Label2.caption);
           Str:= EmptyStr;
      end;
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #7  
Antiguo 02-05-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Caso resuelto maestro..
Responder Con Cita
  #8  
Antiguo 02-05-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Disculpen, pero aunque el FileExists evita el problema, lo que sucede aquí es que se está mandando abrir el archivo aun cuando el usuario haya cancelado la operación. Lo lógico sería:

Código Delphi [-]
if OpenDialog1.Execute then
begin

  ...

  LoadFromFile(OpenDialog1.FileName);

  ...

end;

De esta manera evitamos preguntar por la existencia de un archivo que de antemano sabemos que no existe cuando el usuario cancela el diálogo.

// Saludos
Responder Con Cita
  #9  
Antiguo 02-05-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Cita:
Empezado por roman Ver Mensaje
Disculpen, pero aunque el FileExists evita el problema, lo que sucede aquí es que se está mandando abrir el archivo aun cuando el usuario haya cancelado la operación. Lo lógico sería:


Código Delphi [-]
if OpenDialog1.Execute then
begin

...

LoadFromFile(OpenDialog1.FileName);

...

end;





De esta manera evitamos preguntar por la existencia de un archivo que de antemano sabemos que no existe cuando el usuario cancela el diálogo.

// Saludos
Hola roman.

Lo tengo asi exactamente como lo puso eduarcol y aun cuando seleciono el file.Si decido en vez de "Open" poner "Cancel" el file no entra al buffer ni me pone en el edit que tengo como "Load File" nada. El error que tenia anteriormente desaparecio.No me sale mas la ventana.
Me gustaria entender mejor lo que me explicas ya que me perdi en los puntitos esos.

Un Saludo.
Responder Con Cita
  #10  
Antiguo 02-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por JoseFco Ver Mensaje
Hola roman.

Lo tengo asi exactamente como lo puso eduarcol y aun cuando seleciono el file.Si decido en vez de "Open" poner "Cancel" el file no entra al buffer ni me pone en el edit que tengo como "Load File" nada. El error que tenia anteriormente desaparecio.No me sale mas la ventana.
Me gustaria entender mejor lo que me explicas ya que me perdi en los puntitos esos.

Un Saludo.
Lo que dice roman es que no se necesita de un FileExist si lo estamos buscando y suministrando.

Al hacer un:

Código Delphi [-]
if OpenDialog1.Execute
   then begin
           // todo lo que hay que hacer
          end;

Garantizamos de que en el TEdit quede la ruta del archivo.

Mientras que si se hace:

Código Delphi [-]
if OpenDialog1.Execute
   then Edit1.Text := OpenDialog1.FileName;

// lo que hay que hacer
LoadFromFile(Edit1.Text);
// Sigamos haciendo algo...

Dejamos la posibilidad de que en el TEdit quede un valor inconsistente ante una operación Cancel ya que se está leyendo el valor independientemente de si se validó o se canceló.

La forma correcta es como señala roman: todo el código debe ir en la parte then:

Código Delphi [-]
if OpenDialog1.Execute
   then begin
            // lo que haya que hacer...
            // No hace falta preguntar si existe...
            LoadFromFile(Edit1.Text);
            // algo más para hacer...    
          end;

¿Se vé la diferencia?
Espero que se me entienda. Si no lo vuelvo explicar.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #11  
Antiguo 02-05-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por JoseFco Ver Mensaje
Hola roman.

Lo tengo asi exactamente como lo puso eduarcol y aun cuando seleciono el file.Si decido en vez de "Open" poner "Cancel" el file no entra al buffer ni me pone en el edit que tengo como "Load File" nada. El error que tenia anteriormente desaparecio.No me sale mas la ventana.
Me gustaria entender mejor lo que me explicas ya que me perdi en los puntitos esos.

Un Saludo.
Lo que apunta roman es que "metiendo" en un solo bloque begin...end todo el código no es necesario validar si existe el archivo ya que en el momento que eliges cancel el método execute será false por lo tanto no ejecutará nada.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #12  
Antiguo 02-05-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ya lo explicaron muy bien Delphius y egostar. La solución del FileExists sí resuelve el problema, pero es como tapar el pozo después del niño ahogado Mejor evitar que se ahogue el niño.

De todas formas, por lo general conviene poner la opción ofFileMustExists al diálogo para evitar que el usuario escriba cualquier cosa en el diálogo y oprima aceptar.

// Saludos
Responder Con Cita
  #13  
Antiguo 02-05-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Este es mi codigo original:

Código Delphi [-]
 procedure TForm1.BitBtn1Click(Sender: TObject);
var
   i,j,indice: integer;
  Str: String;
begin
  if OpenDialog1.Execute then
    Edit1.Text:=OpenDialog1.FileName;
    Edit2.Text:=('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>');
    Edit2.Text:=('Load File..................OK !');
  Memo1.Clear;
  //Inicializo las columnas y filas de el stringgrid donde se inicia la escritura

  with TStringList.Create do
    try
     if FileExists(Edit1.Text) then
     begin
      LoadFromFile(Edit1.Text);
      FillChar(Buffer,Sizeof(Buffer),#255);
      for i:= 0 to Count - 1 do
        Insertar(Strings[i],Buffer);
        j:= StrToInt(Label2.caption);
        Str:= EmptyStr;
       end;
      //***************************************************************

begin
  indice := 0; //Suponiendo que buffer sea un array de 1...x
  for i := 1 to 255 do begin  //2 renglones, cambialo a los renglones que esperas
     for j := 1 to 16 do begin //15 columnas
         stringgrid1.Cells[j,i] := inttohex(Buffer[indice],2);
         inc(indice);
     end;
  end;
end;
      //***************************************************************
          Str:= Str + #32 + IntToHex(Buffer[i],2);
            if ((i+1) mod 16 = 0) then
              begin
                Memo1.Lines.Add(Str);
                Str:= EmptyStr;
              end;

      if Str <> EmptyStr then
        Memo1.Lines.Add(Str);
    finally
      Free;
    end;
end;

Si lo corro asi y al final decido no bajar el file me da el error.Entiendo lo que dice roman pero en este procedimiento hago varias cosas y no entiendo a donde mover esa parte del codigo.

Un Saludo.
Responder Con Cita
  #14  
Antiguo 02-05-2008
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Ya lo explicaron muy bien Delphius y egostar. La solución del FileExists sí resuelve el problema, pero es como tapar el pozo después del niño ahogado Mejor evitar que se ahogue el niño.

De todas formas, por lo general conviene poner la opción ofFileMustExists al diálogo para evitar que el usuario escriba cualquier cosa en el diálogo y oprima aceptar.

// Saludos
Momento que no he ahogado a ningun niño

al momento solo tenia esta información:

Código Delphi [-]
if OpenDialog1.Execute then
    Edit1.Text:=OpenDialog1.FileName;

y como lo dijo Eliseo eso esta bien, lo unico que se me ocurrio es que en algun momento el nombre del archivo cambiaba antes de abrirlo por eso propuse que lo buscara. Ademas no le veo lo malo, es solo comprobar si existe o cambio
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #15  
Antiguo 02-05-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
A ver amigo [JoseFco], seguro que esto compila??????

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  i,j,indice: integer;
  Str: String;
begin
  if OpenDialog1.Execute then begin
    Edit1.Text:=OpenDialog1.FileName;
    Edit2.Text:=('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>');
    Edit2.Text:=('Load File..................OK !');
    Memo1.Clear;
    //Inicializo las columnas y filas de el stringgrid donde se inicia la escritura
    with TStringList.Create do
      try
         if FileExists(Edit1.Text) then begin
            LoadFromFile(Edit1.Text);
            FillChar(Buffer,Sizeof(Buffer),#255);
            for i:= 0 to Count - 1 do
                Insertar(Strings[i],Buffer);
            j:= StrToInt(Label2.caption);
            Str:= EmptyStr;
         end;
      //***************************************************************
         begin
           indice := 0; //Suponiendo que buffer sea un array de 1...x
           for i := 1 to 255 do begin  //2 renglones, cambialo a los renglones que esperas
               for j := 1 to 16 do begin //15 columnas
                   stringgrid1.Cells[j,i] := inttohex(Buffer[indice],2);
                   inc(indice);
               end;
           end;
         end; //Este bloque que onda, porque entre un begin....end;
      //***************************************************************
         Str:= Str + #32 + IntToHex(Buffer[i],2);
         if ((i+1) mod 16 = 0) then begin
             Memo1.Lines.Add(Str);
             Str:= EmptyStr;
         end;
         if Str <> EmptyStr then
            Memo1.Lines.Add(Str);
      finally
         Free;
      end;
  end;
end; //Falta un end;

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #16  
Antiguo 02-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Yo también me pregunto si compila...

Lo que está marcado con rojo es el problema.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #17  
Antiguo 02-05-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Asi esta y no solo copila, trabaja bien:

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
   i,j,indice: integer;
  Str: String;
begin
  if OpenDialog1.Execute then
    Edit1.Text:=OpenDialog1.FileName;
    Edit2.Text:=('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>');
    Edit2.Text:=('Load File..................OK !');
  Memo1.Clear;
  //Inicializo las columnas y filas de el stringgrid donde se inicia la escritura

  with TStringList.Create do
    try
     if FileExists(Edit1.Text) then
     begin
      LoadFromFile(Edit1.Text);
      FillChar(Buffer,Sizeof(Buffer),#255);
      for i:= 0 to Count - 1 do
        Insertar(Strings[i],Buffer);
        j:= StrToInt(Label2.caption);
        Str:= EmptyStr;
       end;
      //***************************************************************

begin
  indice := 0; //Suponiendo que buffer sea un array de 1...x
  for i := 1 to 255 do begin  //2 renglones, cambialo a los renglones que esperas
     for j := 1 to 16 do begin //15 columnas
         stringgrid1.Cells[j,i] := inttohex(Buffer[indice],2);
         inc(indice);
     end;
  end;
end;
      //***************************************************************
          Str:= Str + #32 + IntToHex(Buffer[i],2);
            if ((i+1) mod 16 = 0) then
              begin
                Memo1.Lines.Add(Str);
                Str:= EmptyStr;
              end;

      if Str <> EmptyStr then
        Memo1.Lines.Add(Str);
    finally
      Free;
    end;
end;

Asi esta y en mi delphis no me pide mas end alguno.

Un Saludo.
PD: existen algunas declaraciones que estan globales puede que por eso no te copile a ti.
Responder Con Cita
  #18  
Antiguo 02-05-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Aqui va el relajo completo:

Código Delphi [-]
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, CPort, StdCtrls, ComCtrls, Grids, Menus, Mask, Buttons;
//Aqui declaramos el Tipo BUFFER
type
 TBuffer = array[$0000..$FFFF] of Byte;
type
  TForm1 = class(TForm)
    ComPort: TComPort;
    OpenDialog1: TOpenDialog;
    Memo1: TMemo;
    Label2: TLabel;
    Label3: TLabel;
    StringGrid1: TStringGrid;
    Button4: TButton;
    MainMenu1: TMainMenu;
    Archivo1: TMenuItem;
    Puerto1: TMenuItem;
    StaticText1: TStaticText;
    Edit1: TEdit;
    GroupBox1: TGroupBox;
    ProgressBar1: TProgressBar;
    GroupBox2: TGroupBox;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    Edit2: TEdit;
    Edit3: TEdit;
    StaticText2: TStaticText;
    StaticText3: TStaticText;
    Edit4: TEdit;
    StaticText4: TStaticText;
    DEVICE1: TMenuItem;
    AT89S511: TMenuItem;
    AT89S521: TMenuItem;
    About1: TMenuItem;
    Edit5: TEdit;
    StaticText5: TStaticText;
    procedure FormCreate(Sender: TObject);
    procedure ComPortRxChar(Sender: TObject; Count: Integer);
    procedure Memo1Change(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Puerto1Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure AT89S511Click(Sender: TObject);
    procedure AT89S521Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private declarations }
    procedure InicializaGridBuffer;
  public
    { Public declarations }
  end;
const
  BufferSize = 4096;
var
  Form1: TForm1;
  Cuantos, CuentaB : Integer;
  Contador, ByteCnt  : Integer;
  LineaMemo  :  String;
  Count :   Integer;
  //Aqui declaramos la variable BUFFER para que funcione a forma global
  Buffer: TBuffer;
  //Aqui declaramos otra variable de tipo BUFFER para recibir
  BuffReceptor: TBuffer;
implementation
 
{$R *.dfm}
function Insertar(Str: String; var Buffer: TBuffer): String;
var
  i,j,k: Integer;
begin
  Result:= EmptyStr;
  Str:= Trim(Str);
  if Copy(Str,1,1) = ':' then
    if TryStrToInt('$' + Copy(Str,2,2),i) then
      if Length(Str) = ((2*i) + 11) then
        if TryStrToInt('$' + Copy(Str,4,4),j) then
          if TryStrToInt('$' + Copy(Str,8,2),k) then
            if k = 0 then
              begin
                Str:= Copy(Str,10,2*i);
                for k:= j to (j + i - 1) do
                  begin
                    Buffer[k]:= StrToInt('$' + Copy(Str,1,2));
                    Delete(Str,1,2);
                  end;
              end;
end;
procedure TForm1.InicializaGridBuffer;
var
    i,r,j,k,l: integer;
begin
  StringGrid1.ColWidths[0] := 35;
  StringGrid1.Cells[0,0] := 'Addr';
  for i := 0 to 15 do
    StringGrid1.Cells[i+1,0] := IntTohex(i,2);
    for j := 0 to (BufferSize div 16)-1 do    // (BufferSize div 16)
    begin
      k := j;
      StringGrid1.Height := StringGrid1.Height + 1;
      StringGrid1.RowCount := StringGrid1.RowCount + 1;
      StringGrid1.Cells[0,k+1] := IntToHex(l,4);
      l := l + 16;
      for r := 1 to 16 do
      StringGrid1.Cells[r,k+1] := IntToHex(255,2);
end;
end; 
procedure TForm1.FormCreate(Sender: TObject);
begin
  if not ComPort.Connected then
    ComPort.Open;
  Comport.WriteStr(#2#0);
end;
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
  Str: String;
begin
 ComPort.ReadStr(Str, Count);
  if Str= 'Hi-LOGIC' then
    Edit2.Text:=('Programmer detected........OK !')
  else if Str = #1 then
    begin
      case Cuantos of
        1: begin     //poner el chip en prog..
            ComPort.WriteStr(#2#2);
            Cuantos := 2;
           end;
        2: begin //comando para borrar.
            ComPort.WriteStr(#2#3);
            Cuantos := 3;
           end;
        3: begin //Modo Borrar
           sleep(500);
          Edit2.Text:=('Chip Erasing....... OK!')
           end;
        4: begin //poner el chip en prog..
            ComPort.WriteStr(#2#2);
            Cuantos := 5;
           end;
        5: begin // Comando para escribir el chip(06 04 00 00 10 00)
            ComPort.WriteStr(#6#4#0#0#16#0);
             
            ComPort.Write(Buffer[0],1);
            Contador := 1;
           end;
        6: begin //poner el chip en prog..
            ComPort.WriteStr(#2#2);
            Cuantos := 7;
           end;
        7: begin // Comando para leer el chip(06 05 00 00 10 00)
            ComPort.WriteStr(#6#5#0#0#16#0);
            // ya aqui estaria recibiendo los 4096 bytes de data
           end;
      end;
    end
  else if Str = #2 then
    begin
      //
    end
  else if Str = #83 then
    begin
      if contador <= 4095 then
        begin
          ComPort.Write(Buffer[Contador],1);
          ProgressBar1.Position := Contador;
          Inc(Contador);
          Edit5.Text := IntToStr(Contador);
        end
      else if contador = 4096 then
         Edit2.Text:=('Flash Programmed........OK !')
    end
  else if (cuantos = 7) then
    begin
      BuffReceptor[CuentaB] := StrToInt(Str);
      Inc(CuentaB);
      if (CuentaB >= 4096) AND (Cuantos = 7) then
        begin
          cuantos := 0;
          ShowMessage('Lectura de Chip terminada');
        end ;
    end;
end;
 //Aqui comienza el procedimiento para borrar el chip
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
 if not ComPort.Connected then
    ComPort.Open;
 Comport.WriteStr(#4#1#0#1);
   Edit2.Text:=('>>>>>>  >>>>>>  >>>>>>  >>>>>>  >>>>>');
 Cuantos := 1;
end;
 //Aqui comienza el procedimiento para escribir el chip
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
  if not ComPort.Connected then
    ComPort.Open;
 Comport.WriteStr(#4#1#0#1);
 Cuantos := 4;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
   i,j,indice: integer;
  Str: String;
begin
  if OpenDialog1.Execute then
    Edit1.Text:=OpenDialog1.FileName;
    Edit2.Text:=('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>');
    Edit2.Text:=('Load File..................OK !');
  Memo1.Clear;
  //Inicializo las columnas y filas de el stringgrid donde se inicia la escritura

  with TStringList.Create do
    try
     if FileExists(Edit1.Text) then
     begin
      LoadFromFile(Edit1.Text);
      FillChar(Buffer,Sizeof(Buffer),#255);
      for i:= 0 to Count - 1 do
        Insertar(Strings[i],Buffer);
        j:= StrToInt(Label2.caption);
        Str:= EmptyStr;
       end;
      //***************************************************************

begin
  indice := 0; //Suponiendo que buffer sea un array de 1...x
  for i := 1 to 255 do begin  //2 renglones, cambialo a los renglones que esperas
     for j := 1 to 16 do begin //15 columnas
         stringgrid1.Cells[j,i] := inttohex(Buffer[indice],2);
         inc(indice);
     end;
  end;
end;
      //***************************************************************
          Str:= Str + #32 + IntToHex(Buffer[i],2);
            if ((i+1) mod 16 = 0) then
              begin
                Memo1.Lines.Add(Str);
                Str:= EmptyStr;
              end;

      if Str <> EmptyStr then
        Memo1.Lines.Add(Str);
    finally
      Free;
    end;
end;
//Este procedimiento limita a 26 caracteres las lineas del memo
procedure TForm1.Memo1Change(Sender: TObject);
begin
  if (Length(Memo1.Lines.Text) mod 26) = 0 then
    begin
      Memo1.Lines.Add(''); //nueva linea
      Memo1.SelStart := Length(Memo1.Lines.Text); //mover cursor
    end;
end;
 
procedure TForm1.FormShow(Sender: TObject);
begin
  InicializaGridBuffer;
  CuentaB := 0;
end;
 
procedure TForm1.Puerto1Click(Sender: TObject);
begin
  ComPort.ShowSetupDialog ;
end;
procedure TForm1.AT89S511Click(Sender: TObject);
begin
  Edit3.Text:=('AT89S51');
  Edit4.Text:=('4096');
end;
procedure TForm1.AT89S521Click(Sender: TObject);
begin
 Edit3.Text:=('AT89S52');
 Edit4.Text:=('8192');
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
if not ComPort.Connected then
    ComPort.Open;
 Comport.WriteStr(#4#1#0#1);
 Cuantos := 6;
end;
end.

Lo que decia son las declaraciones globales las que no los deja copilar.

Un Saludo.
Responder Con Cita
  #19  
Antiguo 02-05-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Amigo José Francisco, yo te propongo, antes que nada, que revises con cuidado las indentaciones de tu código. Tal como las tienes lo hace casi ilegible. Por ejemplo, en el procedimiento que nos ocupa hay un bloque begin..end con cero indentación cuando debería estarlo. Hay ciclos for al que le siguen varias líneas indentadas pero no están encerradas en un bloque begin..end. Lo mismo con las líneas que siguen al if del OpenDialog.

Tal como está no esposible discernir si esas líneas tenías la intención de pertenecer a un mismo bloque o no y dificulta el anaálisis del código.

// Saludos
Responder Con Cita
  #20  
Antiguo 02-05-2008
JoseFco JoseFco is offline
Baneado
 
Registrado: dic 2007
Posts: 1.861
Poder: 0
JoseFco cantidad desconocida en este momento
Cita:
Empezado por roman Ver Mensaje
Amigo José Francisco, yo te propongo, antes que nada, que revises con cuidado las indentaciones de tu código. Tal como las tienes lo hace casi ilegible. Por ejemplo, en el procedimiento que nos ocupa hay un bloque begin..end con cero indentación cuando debería estarlo. Hay ciclos for al que le siguen varias líneas indentadas pero no están encerradas en un bloque begin..end. Lo mismo con las líneas que siguen al if del OpenDialog.

Tal como está no esposible discernir si esas líneas tenías la intención de pertenecer a un mismo bloque o no y dificulta el anaálisis del código.

// Saludos
Es parte de la novatada, imagino los errores que tendra el codigo, es mi primer programita en Delphi. Y comence por algo grande para uno que apenas entiende algunas cositas.
Me falta mucho que aprender de ustedes.
Un Saludo.
Responder Con Cita
Respuesta



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
Opendialog de carpetas Iuconlas Varios 20 23-09-2014 20:06:28
problema con opendialog lina maria Varios 5 15-04-2008 01:04:48
personalizar un opendialog ebeltete OOP 15 06-07-2006 23:58:53
Problema con OpenDialog Xianto Varios 1 09-02-2005 14:56:15
OpenDialog GIVO Varios 1 29-09-2003 23:20:23


La franja horaria es GMT +2. Ahora son las 17:03:04.


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