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 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: 28
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
  #2  
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
  #3  
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
  #4  
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
  #5  
Antiguo 02-05-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
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
  #6  
Antiguo 02-05-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
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
  #7  
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
  #8  
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
  #9  
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: 28
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
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
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 11:44:08.


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