Login+password pour lire un fichier sur le reseau [Résolu]

Messages postés
28
Date d'inscription
vendredi 4 novembre 2011
Dernière intervention
4 novembre 2011
- 1 sept. 2006 à 17:15 - Dernière réponse :
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
- 17 sept. 2006 à 14:34
Bonjour
J'ai besoins de lire en delphi un fichier log situé sur le reseau.
Y a-t-il un moyen de passer en parametre les login et password me permettant d'acceder a ce fichier ?
Merci

frb
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
- 3 sept. 2006 à 21:16
3
Merci
Salut à tous,

Si c'est juste un problème de se connecter à un lecteur réseau, tu peux utiliser le composant TNetDrive très bien fait (source fournie). Personnellement, j'y ai apporté quelques modifications si cela peut t'aider, fait le moi savoir.
May Delphi be with you !


<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.

Merci cs_Delphiprog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_Delphiprog
Meilleure réponse
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
- 17 sept. 2006 à 14:34
3
Merci
Tout est bien qui finit bien.
L'espace manquant provient de la mise en page de ce site (phénomène étrange avec les copier/coller en RTF).
J'ai oublié de mentionner qu'il fallait créer un package ou en utiliser un existant tellement c'était évident pour moi.
Enfin, désolé pour le retard dans la réponse mais je rentre d'une semaine de vacances .

Il en reste plus qu'à valider la réponse...

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.

Merci cs_Delphiprog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_Delphiprog
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
5 novembre 2018
- 1 sept. 2006 à 18:13
0
Merci
Oui, c'est possible. Une petite recherche sur google t'aurais donné ceci:

Si c'est un protection htaccess:
http://delphi.developpez.com/faq/?page=indy_idhttp#indyidhttphtaccess

Si c'est un login en php, tu remplis les informations de Post ou de Get:
Get:
http://delphi.developpez.com/faq/?page=indy_idhttp#indysimulerget
Post:
http://delphi.developpez.com/faq/?page=indy_idhttp#indyvaliderpost

Pour de plus amples détails:
www.google.com !
Commenter la réponse de cptpingu
Messages postés
28
Date d'inscription
vendredi 4 novembre 2011
Dernière intervention
4 novembre 2011
- 1 sept. 2006 à 20:18
0
Merci
Le probleme n'est pas la... Le fichier que je veux lire est un fichier situé sur un serveur auquek j'ai acces avec un compte admin...
Je fais une appli en delphi qui doit analyser un fichier log sur un serveur de licences (flexlm). Pas de serveur WEB... Pas de htaccess, pas de GET ou POST...
J'ai bien sur chercher sur mon ami google...
Merci
Commenter la réponse de frbos
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
5 novembre 2018
- 1 sept. 2006 à 20:53
0
Merci
Dans ce cas au temps pour moi. Pourrais-t-on avoir le plus de détails possible ?
As-tu au moins un acces FTP ?
Commenter la réponse de cptpingu
Messages postés
28
Date d'inscription
vendredi 4 novembre 2011
Dernière intervention
4 novembre 2011
- 2 sept. 2006 à 10:55
0
Merci
Je dois lire un fichier \\serveur\c$\program files\flexlm\licencing\fichier.log
J'ai un compte "admin" pour acceder a ce serveur. Mon compte "courant" n'y accede pas.
Mon appli ne peut donc pas le lire.
Je n'avais pas pense au FTP... Ca pourrait etre une solution ?

frb
Commenter la réponse de frbos
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Dernière intervention
5 novembre 2018
- 2 sept. 2006 à 15:41
0
Merci
Si tu as un acces FTP alors, tu peux tres bien aller chercher ce fichiers en passant par un protocole FTP.

Je ne sais pas si j'ai bien compris, mais tu dis que sous ton compte admin, cela marche ?
Dans ce cas jette un coup d'oeil à cette source:
http://www.delphifr.com/codes/EXECUTER-TEMPS_37865.aspx
Commenter la réponse de cptpingu
Messages postés
735
Date d'inscription
jeudi 19 décembre 2002
Dernière intervention
22 novembre 2016
- 3 sept. 2006 à 17:56
0
Merci
Et un lecteur réseau ?

Tu auras ainsi un chemin du genre Z:\flexlm\licencing\fichier.log

<!-- blocPrincipal -->
 /\_/\
( o.o ) ~ ElGuevel ~
 > ^ <
Commenter la réponse de elguevel
Messages postés
28
Date d'inscription
vendredi 4 novembre 2011
Dernière intervention
4 novembre 2011
- 3 sept. 2006 à 20:18
0
Merci
J'y ai pense. Monter et demonter le disque une fois le traitement fini. Mais justement, il me demande un login...
Je voudrai le passe en parametre

frb
Commenter la réponse de frbos
Messages postés
28
Date d'inscription
vendredi 4 novembre 2011
Dernière intervention
4 novembre 2011
- 4 sept. 2006 à 15:04
0
Merci
MERCI Delphiprog...
J'ai l'impression que cela repond tout a fait a mon probleme. Je vais essayer ca rapidement !!!
Quelles ameliorations as-tu apporte a ce composant ?
Encore merci

frb
Commenter la réponse de frbos
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
- 6 sept. 2006 à 09:30
0
Merci
D'après la description de ton problème, ce composant semblait effectivement correspondre à tes besoins.
En fait d'améliorations, c'est plus à une restructuration que j'ai procédé (allègement du code lourd, maladroit ou redondant notamment au niveau des chaînes et suppression des ShowMessage bloquants).
En voici le résultat (aucune fonctionnalité ajoutée ou modifiée) :
(*

  This component was downloaded from the
  About Delphi Programming site

  @author(http://delphi.about.com)

  TNetDrive is a non-visual component that connects a network path to a drive name.

  Find more: http://delphi.about.com/library/weekly/aa061503a.htm
  @lastmod(DELPHIPROG, le 01/08/2006 17:15:57)
*)

unit NetDrive;

{$WARN UNIT_PLATFORM OFF}

interface

uses
  Windows, SysUtils, Classes, Controls, Forms, Dialogs;

type
  TNetDrive =   class (TComponent)
  private
    FErrorString: string;
    FDrive: string;
    FOnDisconnect: TNotifyEvent;
    FOnConnect: TNotifyEvent;
    procedure SetOnConnect(const Value: TNotifyEvent);
    procedure SetOnDisconnect(const Value: TNotifyEvent);
    function FreeDriveName: string;
    function DriveExists(const ADrive: string): boolean;
  protected
  public
    constructor Create(AOwner: TComponent); override;
    function Connect(const AResource, AUser, APassword: string): string;
    function Disconnect: boolean;
    property Drive: stringread FDrive;
    property ErrorString: stringread FErrorString;
  published
    property OnConnect: TNotifyEvent read FOnConnect write SetOnConnect;
    property OnDisconnect: TNotifyEvent read FOnDisconnect write
      SetOnDisconnect;
  end;

procedureRegister;

implementation

uses
  FileCtrl;

resourcestring
  rsERROR_ACCESS_DENIED  = 'Access to the network resource was denied.';
  rsERROR_ALREADY_ASSIGNED = 
    'The local device specified by lpLocalName is already connected to a network resource.';
  rsERROR_BAD_DEV_TYPE =
    'The type of local device and the type of network resource do not match.';
  rsERROR_BAD_DEVICE = 'The value specified by lpLocalName is invalid.';
  rsERROR_BAD_NET_NAME =
    'The value specified by lpRemoteName is not acceptable to any network resource provider. The resource name is invalid, or the named resource cannot be located.';
  rsERROR_BAD_PROFILE = 'The user profile is in an incorrect format.';
  rsERROR_BAD_PROVIDER =
    'The value specified by lpProvider does not match any provider.';
  rsERROR_BUSY =
    'The router or provider is busy, possibly initializing. The caller should retry.';
  rsERROR_CANCELLED =
    'The attempt to make the connection was cancelled by the user through a dialog box from one of the network resource providers, or by a called resource.';
  rsERROR_CANNOT_OPEN_PROFILE =
    'The system is unable to open the user profile to process persistent connections.';
  rsERROR_DEVICE_ALREADY_REMEMBERED =
    'An entry for the device specified in lpLocalName is already in the user profile.';
  rsERROR_EXTENDED_ERROR =
    'A network-specific error occured. Call the WNetGetLastError function to get a description of the error.';
  rsERROR_INVALID_PASSWORD = 'The specified password is invalid.';
  rsERROR_NO_NET_OR_BAD_PATH =
    'A network component has not started, or the specified name could not be handled.';
  rsERROR_NO_NETWORK = 'There is no network present.';
  rsERROR_UNKNOWN_ERROR =
    'An unknown error has occured attempting to connect to %s.';
  rsERROR_DEVICE_IN_USE =
    'The device is in use by an active process and cannot be disconnected.';
  rsERROR_NOT_CONNECTED =
    'The name specified by the lpName parameter is not a redirected device, or the system is not currently connected to the device specified by the parameter.';
  rsERROR_OPEN_FILES =
    'There are open files, and the fForce parameter is FALSE.';

 procedure Register;
begin
  RegisterComponents('delphi.about.com', [TNetDrive]);
end;

{ TNetDrive }

function TNetDrive.Connect(const AResource, AUser, APassword: string): string;
var
  n: NETRESOURCE;
  i: integer;
begin
  FErrorString : = EmptyStr;
  FDrive :=  '';
  n.dwScope := RESOURCE_GLOBALNET;
  n.dwType := RESOURCETYPE_DISK;
  n.dwDisplayType := RESOURCEDISPLAYTYPE_GENERIC;
  n.dwUsage := RESOURCEUSAGE_CONNECTABLE;
  n.lpLocalName := PChar(FreeDriveName);
  n.lpRemoteName := PChar(AResource);
  n.lpComment := '';
  n.lpProvider := '';
  i := WNetAddConnection2(n, PChar(APassword), PChar(AUser), 0);
   case  i of
    NO_ERROR:
      begin
        Sleep(500);
        FDrive : = n.lpLocalName;
        repeatuntil DriveExists(FDrive);

        if Assigned(FOnConnect) then
          FOnConnect(self);
      end;

    ERROR_ACCESS_DENIED: FErrorString :=  rsERROR_ACCESS_DENIED;
    ERROR_ALREADY_ASSIGNED: FErrorString := rsERROR_ALREADY_ASSIGNED;
    ERROR_BAD_DEV_TYPE:FErrorString := rsERROR_BAD_DEV_TYPE;
    ERROR_BAD_DEVICE:FErrorString := rsERROR_BAD_DEVICE;
    ERROR_BAD_NET_NAME:FErrorString := rsERROR_BAD_NET_NAME;
    ERROR_BAD_PROFILE:FErrorString := rsERROR_BAD_PROFILE;
    ERROR_BAD_PROVIDER:FErrorString := rsERROR_BAD_PROVIDER;
    ERROR_BUSY: FErrorString := rsERROR_BUSY;
    ERROR_CANCELLED: FErrorString := rsERROR_CANCELLED;
    ERROR_CANNOT_OPEN_PROFILE:FErrorString := rsERROR_CANNOT_OPEN_PROFILE;
    ERROR_DEVICE_ALREADY_REMEMBERED:FErrorString := rsERROR_DEVICE_ALREADY_REMEMBERED;
    ERROR_EXTENDED_ERROR: FErrorString := rsERROR_EXTENDED_ERROR;
    ERROR_INVALID_PASSWORD:FErrorString := rsERROR_INVALID_PASSWORD;
    ERROR_NO_NET_OR_BAD_PATH:FErrorString := rsERROR_NO_NET_OR_BAD_PATH;
    ERROR_NO_NETWORK: FErrorString := rsERROR_NO_NETWORK;
  else
    FErrorString := Format(rsERROR_UNKNOWN_ERROR, [AResource]);
   end ;
  Result : = FDrive;
end;

constructor TNetDrive.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
//   FErrorString :=  '';
//   FDrive := '';
  FOnDisconnect :=  nil ;
  FOnConnect : = nil;
end;

function TNetDrive.Disconnect: boolean;
begin
  result :=  false;
  FErrorString := EmptyStr;
   if  FDrive <> ''then
  begin
    case WNetCancelConnection2(PChar(FDrive), 0, true) of
      NO_ERROR:
        begin
          FDrive : = '';
          Result :=  true;
           if  Assigned(FOnDisconnect) then
            FOnDisconnect(self);
        end;
      ERROR_BAD_PROFILE: FErrorString : = rsERROR_BAD_PROFILE;
      ERROR_CANNOT_OPEN_PROFILE: FErrorString :=  rsERROR_CANNOT_OPEN_PROFILE;
      ERROR_DEVICE_IN_USE: FErrorString := rsERROR_DEVICE_IN_USE;
      ERROR_EXTENDED_ERROR: FErrorString := rsERROR_EXTENDED_ERROR;
      ERROR_NOT_CONNECTED: FErrorString := rsERROR_NOT_CONNECTED;
      ERROR_OPEN_FILES: FErrorString := rsERROR_OPEN_FILES;
     end ;
  end;
end;

function TNetDrive.DriveExists(const ADrive: string): boolean;
var
  buf: string;
begin
  GetDir(0, buf);
{$I-}
  ChDir(ADrive);
{$I+}  Result : (IOResult  0);
  ChDir(buf);
 end ;

function TNetDrive.FreeDriveName: string;
var
  l: TStringList;
  d: TDriveComboBox;
  t: char;
  i: integer;
begin
  l : = TStringList.Create;
  d :=  TDriveComboBox.Create(Application.MainForm);
  d.Parent := Application.MainForm;
  d.Visible := false;
  l.Assign(d.Items);
  d.Free;
   for  i : = 0 to l.Count - 1 do
    l[i] :=  copy(l[i], 1, 1);
  t := 'd';
  result := '';   while  (t < 'z') <gras>and (result</gras>  '') do
     if  l.IndexOf(t)  = -1then
      result :=  t
    else
      inc(t);
  l.Free;
   if  result <> ''then
    result : = result + ':';
end;

procedure TNetDrive.SetOnConnect(const Value: TNotifyEvent);
begin
  FOnConnect :=  Value;
 end ;

procedure TNetDrive.SetOnDisconnect(const Value: TNotifyEvent);
begin
  FOnDisconnect : = Value;
end;

end.

En espérant que cela t'aidera.

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Commenter la réponse de cs_Delphiprog
Messages postés
28
Date d'inscription
vendredi 4 novembre 2011
Dernière intervention
4 novembre 2011
- 12 sept. 2006 à 11:20
0
Merci
Bonjour DelphiProg

J'essaie d'utiliser TNetDrive, et j'ai deux soucis...
1 - Sur ton source, ligne 39 property Drive: stringread FDrive; stringread n'est pas reconnu
2- Je n'arrive pas a installer le composant. J'utilise delphi 2006. Est-ce qu'il suffut de faire un uses de l'unit dans mon appli ?
Merci
frb
Commenter la réponse de frbos
Messages postés
28
Date d'inscription
vendredi 4 novembre 2011
Dernière intervention
4 novembre 2011
- 12 sept. 2006 à 11:25
0
Merci
DelphiProg
Oublie le point 1 de mon dernier post... Il manque simplement l'espace entre string et read...
Désolé.

frb
Commenter la réponse de frbos
Messages postés
28
Date d'inscription
vendredi 4 novembre 2011
Dernière intervention
4 novembre 2011
- 12 sept. 2006 à 13:33
0
Merci
DelphiProg
Ce coup ci, c'est bon. J'ai reussi a installer le composant. Je ne savais pas qu'il fallait passer par un package...
Encore merci, le composant convient tout a fait...

frb
Commenter la réponse de frbos

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.