Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-04-2013
Gallosuarez Gallosuarez is offline
Miembro
 
Registrado: feb 2007
Posts: 92
Poder: 20
Gallosuarez Va por buen camino
Lightbulb Nota aclaratoria ...

Gluglu:

Cuando digo número de serie de la tarjeta de red ... en realidad me estoy refiriendo a la MAC de la tarjeta ...

Saludos,
Gerardo Suárez Trejo
Responder Con Cita
  #2  
Antiguo 20-04-2013
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.222
Poder: 24
newtron Va camino a la fama
Yo iba a proponer algo parecido a lo del colega GalloSuarez. Si el problema es que no quieres que la base de datos funcione en otro servidor podrías anclarla a servidor en el que está bien por algún dato del hardware del servidor y bien puede ser la MAC de la tarjeta de red si consigues leer ese dato desde los clientes.
__________________
Be water my friend.
Responder Con Cita
  #3  
Antiguo 22-04-2013
Avatar de Osorio
Osorio Osorio is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 252
Poder: 24
Osorio Va por buen camino
Varias cosas

Un dia de vago, me puse a inventar algo parecido.

Lo que se me ocurrio fue:

MAC
Serial Disco Duro
Palabra clave


Luego intercalo las tres cadenas generando una tercera cadena.

Finalmente la tercera cadena la paso por una funcion de encriptacion.
Responder Con Cita
  #4  
Antiguo 22-04-2013
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 24
gluglu Va por buen camino
Gracias todos por vuestras respuestas :

Queda claro que el método para evitar copias se basa en obtener algún número único, llámese MAC de las tarjetas de red o cualquier otro número único del equipo.

Eso es precisamente lo que intentaba aclarar en mi post inicial .... que eso ya lo tengo hecho.

Mi pregunta se refería en concreto si FIREBIRD es capaz de devolver alguno de esos datos en sí mismo. Por todas las contestaciones anteriores, lo que entiendo es que la única manera es a través de una UDF, no ?

Saludos
__________________
Piensa siempre en positivo !
Responder Con Cita
  #5  
Antiguo 22-04-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.618
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por gluglu Ver Mensaje
Por todas las contestaciones anteriores, lo que entiendo es que la única manera es a través de una UDF, no ?
En esencia, sí. Tiene que ser mediante una UDF, a no ser que tengas una versión de Firebird que:

a) Posea funciones integradas para obtener este tipo de información.
b) Admita llamadas directas a funciones del sistema operativo.

Crear una UDF no tiene demasiada ciencia, encontrarás bastante material sobre ello en estos foros. Saludos.
__________________
Tras casi seis años de trabajar para una empresa alemana como desarrollador Delphi, se vieron forzados a dejarme ir (temas presupuestales). Así que ahora estoy abierto a escuchar nuevas ofertas.
Responder Con Cita
  #6  
Antiguo 23-04-2013
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 17
pacopenin Va por buen camino
Hace algún tiempo intenté algo así y creo recordar que el número de serie del disco duro del servidor se puede leer desde cualquier equipo. Solo hay que solicitarlo indicando una carpeta compartida del mismo. Esto hace que todos los puestos obtengan el mismo serial. A lo mejor te puede servir...
__________________
http://www.gestionportable.com
Responder Con Cita
  #7  
Antiguo 23-04-2013
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 24
gluglu Va por buen camino
Crear la DLL en Delphi :

Código Delphi [-]
library MyUDF;

uses
  System.SysUtils,
  System.Classes,
  Windows, SysUtils;

{$R *.res}

function ib_util_malloc(l: integer): pointer; cdecl; external 'ib_util.dll';
function FindVolumeSerial(const p: PAnsiChar): PAnsiChar; cdecl;

implementation

function FindVolumeSerial(const p: PAnsiChar): PAnsiChar; cdecl;
var
  VSN : DWORD;
  MCL : DWORD;
  FSF : DWORD;
  SN  : string;
begin
  GetVolumeInformation('C:\', nil, 0, @VSN, MCL, FSF, nil, 0);
  SN := IntToHex(HiWord(VSN), 4) + ' - ' + IntToHex(LoWord(VSN), 4);
  Result := ib_util_malloc(Length(SN) + 6);
  StrPCopy(Result, SN);
end;

exports
  FindVolumeSerial;

begin
end.

... y después en Firebird :

Código SQL [-]
declare external function Find_VolumeSerial
  CSTRING(20)
returns
  CSTRING(20) FREE_IT
entry_point 'FindVolumeSerial' module_name 'MyUDF';

Por último, para pedir los datos del número de serie mediante la consulta SQL :

Código SQL [-]
Select Find_VolumeSerial('C') from RDB$Database

Saludos a todos y de nuevo gracias por vuestra ayuda !
__________________
Piensa siempre en positivo !
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
Generar clave única vivamotos C++ Builder 1 06-06-2008 12:42:41
enviar mensajes de error en campos obligatorios y clave unica Goyo Conexión con bases de datos 0 15-05-2007 23:11:07
Obtener la clave de una base de datos de FireBird vzar42 Firebird e Interbase 5 19-01-2007 22:43:35
Problemas al generar una clave unica Huer OOP 6 09-06-2004 02:58:57
Validar clave unica en Paradox dchaparro Tablas planas 6 20-04-2004 01:34:58


La franja horaria es GMT +2. Ahora son las 08:12:37.


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