Power Builder - Read only

 
Vista:

Read only

Publicado por christian (2 intervenciones) el 28/08/2004 00:22:43
hola a todos, mi pregunta es la siguiente, yo tengo un sistema que exporta archivos .txt pero quiero que estos archivos tengan el attributo read only, cree un .bat para ponerle el archivo y funciona pero me crea confusiones cuando lo pruebo en un cliente. Habra otra forma de hacerlo? esto esta codificado en pb 6.5
Gracias por su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cambiar atributos de un archivo

Publicado por Oscar (1178 intervenciones) el 28/08/2004 05:21:45
Para cambiar los atributos de cualquier archivo, puedes emplear la API SetFileAttributes. Es decir:

1. Declaras en Local External Fuctions:

Function boolean SetFileAttributes (ref string lpFileName, ulong dwFileAttributes) Library "KERNEL32.DLL" Alias for "SetFileAttributesA"

2. Script en PB:

string ls_archivo

//Posibles constantes a aplicar:
Constant integer FILE_ATTRIBUTE_HIDDEN = 2
Constant integer FILE_ATTRIBUTE_NORMAL = 128
Constant integer FILE_ATTRIBUTE_READONLY = 1

ls_archivo="C:\miarchivo.txt"

Boolean lb_ret
lb_ret = SetFileAttributes(ls_archivo, FILE_ATTRIBUTE_READONLY)

IF Not lb_ret THEN
Messagebox("Error", "Error al cambiar el atributo para: "+ls_archivo)
END IF
//--------Fin--------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar atributos de un archivo

Publicado por christian (2 intervenciones) el 29/08/2004 00:03:57
gracias por la ayuda la pondre en practica una pregunta.. q valor devuelve el SetFileAttributes y para que sirve ese Alias for "SetFileAttributesA" ??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar atributos de un archivo

Publicado por Oscar (1178 intervenciones) el 29/08/2004 03:58:03
* La declaracion original de la API es:
BOOL SetFileAttributes(
LPCTSTR lpFileName, // address of filename
DWORD dwFileAttributes // address of attributes to set
);
Donde se observa que usa el tipo de dato BOOL. El equivalente en PB, es Boolean que devuelve: TRUE (éxito) o FALSE (Fallo).

* Sobre la segunda pregunta, el significado es:
- Library "kernel32.dll"
La función está en la librería "kernel32.dll"

- Alias SetFileAttributesA
En la librería tiene ese nombre.

- Function boolean SetFileAttributes(...
El nombre que utilizaremos para llamarla será SetFileAttributes . Este nombre lo podíamos cambiar por ejemplo a:
Function boolean CambiarAtributo(... ; pero tendrías que llamarla en el script con:
lb_ret = CambiarAtributo(ls_archivo, FILE_ATTRIBUTE_READONLY)

Ahora si no te gusta emplear un Alias, puedes declararlo de manera más corta:
Function boolean SetFileAttributesA (ref string lpFileName, ulong dwFileAttributes) Library "KERNEL32.DLL"

Y tendrías que llamarlo directamente, como:
lb_ret = SetFileAttributesA(ls_archivo, FILE_ATTRIBUTE_READONLY)

Finalmente en:
http://www.iespana.es/powerbuilder/trucos/trucosAPI.html
En "Modificar los atributos de un archivo". Emplea esta API un poco diferente a lo expuesto.

Creo que ya nos confundimos los dos ;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar