PDA

Ver la Versión Completa : Path completo en la red


RebeccaGL
24-01-2008, 17:49:48
Como podria cargar todos los paths de una red.

Ejemplo

La maquina 0001 = c:\sistema\datos
La maquina 0002 = Brad\c:\sistema\datos
La maquina 0002 = Juan\c:\sistema\datos

El path de la maquina 0001 ya lo se porque es ahi donde se ejecuta mi programa, pero como saber ó mejor dicho como cargar en una cadena el path de la maquina 0002 ó 0003. En el explorador salen dichos path's pero la idea es cargarlos sin tener que usar el explorador de windows.

Ejemplo:
cadena[1] := Brad\c:\sistema\datos
cadena[2] := Juan\c:\sistema\datos

se entiende ó no ???

gracias

cHackAll
25-01-2008, 00:05:54
se entiende ó no ???

No muy bien pero corrigeme; deseas llenar una lista con todas las carpetas compartidas o con los nombres de los equipos, del equipo de trabajo?

RebeccaGL
25-01-2008, 14:27:30
No muy bien pero corrigeme; deseas llenar una lista con todas las carpetas compartidas o con los nombres de los equipos, del equipo de trabajo?

Mi estimado cHackAll, deseo llenar una lista con todas las carpetas compartidas.

\\usuario_0001\sistema\datos (file://\\usuaio_0001\sistema\datos)
\\usuario_0002\sistema\datos (file://\\usuario_0002\sistema\datos)
\\usuario_0003\sistema\datos (file://\\usuario_0003\sistema\datos)

Ojo solo las carpetas compatidas en RED.

También he visto rutinas en delphi, en este Foro donde obtiene los nombres de los equipos en Red y si estan conectados o no, he probado estas rutinas y fallan la maquina se cuelga. ¿A que se debe esto?.


Gracias.

cHackAll
27-01-2008, 02:28:43
var Items: array [0..32767] of TNetResource;

procedure AddResources(NodeName: string; List: TStrings);
var hEnum, Count, Size: Cardinal;
begin
Items[0].lpRemoteName := PChar(NodeName);
Count := $FFFFFFFF; Size := SizeOf(Items);
WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK, 0, @Items, hEnum);
WNetEnumResource(hEnum, Count, @Items, Size);
WNetCloseEnum(hEnum);
while LongBool(Count) do
begin
Dec(Count);
List.Add(Items[Count].lpRemoteName);
end;
end;

type
PWkstaInfo100 = ^TWkstaInfo100;
TWkstaInfo100 = record
wki100_platform_id: Cardinal;
wki100_computername,
wki100_langroup: PWideChar;
wki100_ver_major,
wki100_ver_minor: Cardinal;
end;

function NetWkstaGetInfo(server: PWideChar; level: Cardinal; bufptr: Pointer): Cardinal; stdcall; external 'netapi32.dll';

procedure TForm1.Button1Click(Sender: TObject);
var
Info: PWkstaInfo100;
Index: Cardinal;
begin
if not LongBool(NetWkstaGetInfo(nil, 100, @Info)) and Assigned(Info) then
begin
ListBox1.Items.Clear;
AddResources(string(Info.wki100_langroup), ListBox1.Items);
LocalFree(Cardinal(Info));
Index := ListBox1.Count;
while LongBool(Index) do
begin
AddResources(ListBox1.Items[0], ListBox1.Items);
ListBox1.Items.Delete(0);
Dec(Index);
end;
end;
end;

El anterior código hace lo que necesitas (enumerar las carpetas compartidas en tu grupo de trabajo), tambien lo he dejado como truco (http://www.clubdelphi.com/trucos/index.php?id=460) para futuras busquedas.

PD: connor no repitas los hilos, lo óprimo hubiese sido que contunues el anterior hilo (http://www.clubdelphi.com/foros/showthread.php?t=52422) o que lo aclares.

Saludos (http://www.clubdelphi.com/foros/guiaestilo.php)

RebeccaGL
30-01-2008, 13:57:13
Gracias, por la rutina fui a probarla y me dio este error:
[Error] ENTRED.PAS(496): Undeclared identifier: 'AddResources'

Podrias decirme en que unidad va este comando AddResources, porque no la encuentro. O que unidades hay que incluir en el Modulo.

Gracias

jachguate
30-01-2008, 17:36:03
Por lo que veo, AddResources está declarado en la misma unidad (linea 3 del listado publicado por Javier).

¿no? :confused: :confused: :confused:

RebeccaGL
31-01-2008, 04:49:25
Heyyyyyyyy , disculpa es que le cambie el nombre a la funcion.

Soy un pelotas. sorry sorry sorry

Hasta la vista.

connor

RebeccaGL
03-02-2008, 01:58:04
cHackAll tu rutina es interesante pero se cuelga puedes decirme porque?. Estoy usando Delphi 7 con Tablas Paradox 7

He comprado el MySQL 6.0 y he tratado de usarlo pero me bota error "unable load libmysql.dll", lo he estado usando con componentes DBExpress, alguien sabe como hacer trabajar MySQL con Delphi 7.

Gracias

cHackAll
03-02-2008, 23:42:43
cHackAll tu rutina es interesante pero se cuelga puedes decirme porque?. Estoy usando Delphi 7 con Tablas Paradox 7

He comprado el MySQL 6.0 y he tratado de usarlo pero me bota error "unable load libmysql.dll", lo he estado usando con componentes DBExpress, alguien sabe como hacer trabajar MySQL con Delphi 7.

Gracias

En definitiva dudo que sea un problema causado por mi código; (si tienes dudas pruébalo en un proyecto nuevo).

El problema claramente dice que no puede cargar la libreria libmysql.dll... buscalo y copialo en la carpeta donde esta tu proyecto/aplicacion o en la carpeta %SystemRoot%\system32.

Suerte

RebeccaGL
18-02-2008, 20:15:18
Ahora el problema con el que estoy luchando es este...
Quisiera saber como obtener el Path completo del Explorador de windows, ejemplo:

Si en el explorador me ubico en c:\archivos de programa\dababase
El path seria c:\archivos de programa\dababase

Pero lo que quiero saber es como hago para que el Path sea desde la raiz principal para acceder a las tablas de otra maquina via RED.

Ejemplo
Mi PC\c:\archivos de programa\dababase

Cuando trato de acceder las tablas de otra maquina via RED no me deja por el bendito Path, se cuelga el sistema no me toma en cuenta desde la raiz solo me toma en cuenta desde la letra de la unidad hacia adelante ejemplo:

c:\archivos de programa\Database

y lo que quiero es esto....

Mis sitios de Red\Toda la Red\c:\archivos de programa\Database

Estoy usando Tablas Paradox, por eso necesito obtener el path completo, para poder acceder ha otra maquina y poder leer sus tablas para esto tendria que darle un path correcto, estoy usando el componente SheellTreeView que viene con Delphi 7 para realizar esta tarea, pero nada, que estoy haciendo mal ó estoy equivocado, alguien tiene una solución, pueden ayudarme gracias.


saludos

Connor