Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1236 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Plusieurs petites questions et demande de fonction sur Delphi

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Plusieurs petites questions et demande de fonction sur Delphi

n°266202
Un4GivN
Posté le 10-12-2002 à 07:51:23  profilanswer
 

Je me pose certaines questions sur Delphi... vous pouvez surement m'aider !
 
1. Comment on concatène 2 chaînes de caractères ? ( strcat c'est dla belle merdouille qui fonctionne avec des PChar )
 
2. Pour linker une base de données... y'aurait pas un moyen de faire comme en VB : application.path & 'database.mdb'; ?
 
3. Comment on fait pour faire une ConnexionString pour une base de données avec ça ?

Code :
  1. Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=F:\Compilation CD 2002\cd.mdb;Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False

???
 
4. Comment savoir le nom (label ) du CD dans le lecteur ?
5. Comment détecter les lecteurs de CD-Rom ?
6. Si je veux faire des requêtes SQL à ma BD, j'ai seulement besoin d'un ADOQuery ? ( En spécifiant la ConnexionString dans le code si je peux y arriver... )
7. Il y a un équivalent à "DoEvent" ?

mood
Publicité
Posté le 10-12-2002 à 07:51:23  profilanswer
 

n°266253
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-12-2002 à 10:06:11  profilanswer
 

1.  chaine3 := chaine1 + chaine2;
 
2. ExtractFilePath(Application.ExeName) + 'database.mdb' :??:
 
3.


ConnectString := Format('Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=%s%s;Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False', [chemin, nomBD]);


 
4. je sais plus :D GetVolumeInformation probablement
 
5. Y a GetDriveType qui donne le type, doit y avoir une fonction qui liste les lecteurs existants aussi
 
6. Je mets un TADOConnection, je lui spécifie le ConnecionString à utiliser, puis j'y lie un TADOQuery, ça suffit
 
7. Application.ProcessMessages; et Application.HandleMessage; (le premier bouffera 100% de CPU dans une boucle où y a que ça, mais le second sera peut-être moins "temps réel", faut tester les deux donc)


Message édité par antp le 10-12-2002 à 10:06:31

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°266263
taureau
Posté le 10-12-2002 à 10:40:15  profilanswer
 

exact pour le 4... la preuve par google  :D  
 
http://greatis.com/delphi/drives-cdlabel.html

n°266359
Un4GivN
Posté le 10-12-2002 à 13:53:28  profilanswer
 

Ooouhhh... vous avez combien d'années d'expériences pour rire ? :) Vous êtes vraiment trop bon. ( Quel âge aussi ? )
 
:jap:

n°266387
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-12-2002 à 14:24:54  profilanswer
 

22 ans, j'ai découvert Delphi à l'école il y a presque 3 ans
Avant ça j'avais déjà un peu utilisé C++Builder et appris le C/C++ avant.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°266389
Un4GivN
Posté le 10-12-2002 à 14:25:52  profilanswer
 

:ouch:  ... tout de même hot ! :)

n°266463
Un4GivN
Posté le 10-12-2002 à 15:46:39  profilanswer
 

On ne peut pas faire d'array pour une fonction ? Ça me serait grandement utile...
 
function GetCDLetter: array[0..25] of string; stdcall;
var
  N: Byte;
  Drv: string;
  Drives: set of 0..25;
begin
  Integer(Drives):=GetLogicalDrives;
  for N:=0 to 25 do
    if N in Drives then
    begin
      Drv:=Char(N+Ord('A';))+':\';
      if(GetDriveType(PChar(Drv))=5) then
      begin
          GetCDLetter[n] := Drv;
//        Result:=Drv;
//        Exit;
      end;
    end;
end;
 
function GetCDLabel(Drive: string): string; stdcall;
var
  VolumeName: array[0..255] of Char;
  FileSystemType: array[0..255] of Char;
  SerialNum: DWORD;
  MaxFilenameLength: DWORD;
  Flags: DWORD;
begin
  if (GetVolumeInformation(
    PChar(Drive),
    VolumeName,
    256,
    @SerialNum,
    MaxFilenameLength,
    Flags,
    FileSystemType,
    256)) then Result:=VolumeName
  else Result:='No CD Present';
end;

n°266465
Un4GivN
Posté le 10-12-2002 à 15:47:22  profilanswer
 

On ne peut pas faire d'array pour une fonction ? Ça me serait grandement utile...
 
function GetCDLetter: array[0..25] of string; stdcall;
var
  N: Byte;
  Drv: string;
  Drives: set of 0..25;
begin
  Integer(Drives):=GetLogicalDrives;
  for N:=0 to 25 do
    if N in Drives then
    begin
      Drv:=Char(N+Ord('A';))+':\';
      if(GetDriveType(PChar(Drv))=5) then
      begin
      GetCDLetter[n] := Drv
//        Result:=Drv;
//        Exit;
      end;
    end;
end;
 
function GetCDLabel(Drive: string): string; stdcall;
var
  VolumeName: array[0..255] of Char;
  FileSystemType: array[0..255] of Char;
  SerialNum: DWORD;
  MaxFilenameLength: DWORD;
  Flags: DWORD;
begin
  if (GetVolumeInformation(
    PChar(Drive),
    VolumeName,
    256,
    @SerialNum,
    MaxFilenameLength,
    Flags,
    FileSystemType,
    256)) then Result:=VolumeName
  else Result:='No CD Present';
end;


Message édité par Un4GivN le 10-12-2002 à 15:48:11
n°266469
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-12-2002 à 15:51:14  profilanswer
 

quel est l'intérêt d'un array de string pour stocker 1 lettre à chaque fois ?
 
je capte pas ce que tu veux faire en fait...
 
si tu veux la liste des lettres au début de la fonction tu mets Result := '';
puis à la place de
   if(GetDriveType(PChar(Drv))=5) then
   begin
     Result := Drv;
     Exit;
   end;
tu mets
   if(GetDriveType(PChar(Drv))=5) then
   begin
     Result := Result + Drv;
   end;


Message édité par antp le 10-12-2002 à 15:53:31

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°266473
Un4GivN
Posté le 10-12-2002 à 15:52:42  profilanswer
 

Exemple : Label1.Caption:=GetCDLabel(GetCDLetter());
 
Je ne reçois que les informations du premier lecteur de CD. J'aimerais pouvoir 'tous' les voir...

mood
Publicité
Posté le 10-12-2002 à 15:52:42  profilanswer
 

n°266477
Un4GivN
Posté le 10-12-2002 à 15:59:48  profilanswer
 

antp a écrit :

quel est l'intérêt d'un array de string pour stocker 1 lettre à chaque fois ?
 
je capte pas ce que tu veux faire en fait...
 
si tu veux la liste des lettres au début de la fonction tu mets Result := '';
puis à la place de
   if(GetDriveType(PChar(Drv))=5) then
   begin
     Result := Drv;
     Exit;
   end;
tu mets
   if(GetDriveType(PChar(Drv))=5) then
   begin
     Result := Result + Drv;
   end;


 
Euh non. Drv sera utilisé pour la prochaine boucle et on aura une donnée erronée. Finalement tout ce que je vais reçevoir c'est 'No Cd Present'

n°266483
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-12-2002 à 16:01:25  profilanswer
 

bhen oui mais bon après c'est à toi à appeler GetCDLabel pour chacune des lettre contenues dans la chaîne renvoyée par GetCDLetter


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°266486
Un4GivN
Posté le 10-12-2002 à 16:01:46  profilanswer
 

:D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Plusieurs petites questions et demande de fonction sur Delphi

 

Sujets relatifs
Delphi 7 : Rendre un form translucide PENDANT le run[SQL] Additionné plusieurs champs numériques dont un est NULL ?
[ PERL ] Fonction pour ouvrir un fichier htmlCherches logiciel créateur d'installation de plusieurs logiciels.
Demande de test sous IE5 et 5.5 (xhtml1.1)[delphi] débutant : Démarrage d'une application
[delphi] débutant : Déclarer une API[delphi] débutant : quitter une fonction
Delphi 4 + BD : Un moyen pour avoir des nombre vraiment long 
Plus de sujets relatifs à : Plusieurs petites questions et demande de fonction sur Delphi


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR