Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Utilizacion archivo con api win32 (https://www.clubdelphi.com/foros/showthread.php?t=72189)

lucila89 02-02-2011 15:34:07

Utilizacion archivo con api win32
 
Quisiera saber como se utilizan las llamadas siguientes:

CreateFile
DeleteFile
CloseHandle
ReadFile
WriteFile

encontré un par de ejemplos en esta pagina pero quisiera saber si alguien me puede ayudar. el codigo para crear archivos, ¿seria el siguiente?

Código Delphi [-]
program hello;

{$APPTYPE CONSOLE}

uses windows;

var
F:integer;


begin

F:=CreateFile('D:\archivo.txt',generic_read, 0, nil, create_always, file_attribute_normal,0);

closehandle(F);


end.

El ReadFile y los demás ¿como serian ?

desde ya muchas gracias

ecfisa 03-02-2011 07:05:19

Hola lucila89.

Te hice un ejemplo básico donde se utilizan las funciones que solicitas:
Código Delphi [-]
...
const
  FILE_NAME = 'C:\PRUEBA.TXT';
var
  Hnd: Integer;
  stToRead, stToWrite: string;
  NR,NW: LongWord;
begin
  Hnd:= CreateFile(FILE_NAME, GENERIC_WRITE, FILE_SHARE_DELETE,
                    nil, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
  if Hnd = INVALID_HANDLE_VALUE then
   raise Exception.Create('Error creando archivo')
  else
  begin
    Readfile(Hnd, stToRead, Length(stToRead), NR, nil); // leer
    stToWrite:= 'PRUEBA_DE_ESCRITURA_CON_WINDOWS_API';
    WriteFile(Hnd, stToWrite[1], Length(stToWrite), NW, nil);
    CloseHandle(Hnd);
    if MessageBox(Handle,'¿ BORRA EL ARCHIVO ?','',MB_ICONQUESTION + MB_YESNO) = IDYES then
      Windows.DeleteFile(FILE_NAME)
  end;
end;
Es sólo un código trivial que crea/abre, lee, escribe, cierra y borra. Si querés más detalles sobre el uso de las funciones,
te dejo los enlaces con la información: CreateFile Function , CloseHandle Function , DeleteFile Function , ReadFile Function , WriteFile Function

Un saludo.

lucila89 03-02-2011 12:59:58

muchas gracias ecfisa me sirvio mucho la información y el ejemplo :cool:, ahora mismo estoy leyendo un poquito mas en los enlaces que me pasaste

lucila89 03-02-2011 14:26:47

tengo un problema para leer el archivo o no lo entendí bien, osea en el readFile del ejemplo usaste un string como salida, en el link vi que la salida seria el buffer.
por ejemplo este código no me anda.

Código Delphi [-]
program Mayuscula;
uses windows,sysutils;
var
archivo,archivo2: LPCTSTR;
entrada, salida: Integer; 
stRead, stWrite:string;
NR, NW: LongWord;
begin
archivo:= 'D:\texto.txt';
archivo2:= 'D:\texto2.txt';
entrada:= CreateFile(archivo, GENERIC_READ + GENERIC_WRITE, FILE_SHARE_WRITE, NIL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
salida:= CreateFile(archivo2, GENERIC_READ + GENERIC_WRITE, FILE_SHARE_WRITE, NIL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
ReadFile(entrada, stRead, length(stRead), NR, NIL);
  stWrite:= uPcase(stRead);
  WriteFile(salida, stWrite[1], Length(stWrite), NW, NIL);
CloseHandle(entrada);
CloseHandle(salida);
end.

que esta mal en el codigo?

ecfisa 03-02-2011 21:59:57

Hola lucila89.

Probá de esta forma:
Código Delphi [-]
...
const
  FILE_NAME = 'C:\PRUEBA.TXT';
var
  Hnd: Integer;
  stToRead: shortString;
  NR: LongWord;
begin
  Hnd:= CreateFile(FILE_NAME, GENERIC_READ + GENERIC_WRITE,
                   FILE_SHARE_READ + FILE_SHARE_WRITE, 0,
                   OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  Readfile(Hnd, stToRead, SizeOf(stToRead), NR, nil);
  CloseHandle(Hnd);
  ShowMessage(stToRead);
end;

Un saludo.

lucila89 03-02-2011 22:21:38

muchas gracias cariño, anduvo de diez y pude terminar mi programa.

ecfisa 03-02-2011 22:38:45

Hola de nuevo lucila89.

Me alegra haberte servido de ayuda.

Un saludo.


La franja horaria es GMT +2. Ahora son las 11:33:58.

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