Accueil > > > K-EAGLE : ENSEMBLE DE FONCTIONS UTILES (FICHIERS, SYSTÈME, STRINGS, RS232 ...)
K-EAGLE : ENSEMBLE DE FONCTIONS UTILES (FICHIERS, SYSTÈME, STRINGS, RS232 ...)
Information sur la source
Description
Voila quelques fonctions qui pouront rendre service à certains. Il y a 3 sortes de foctions : * fabriqués maison * modifiés maison * copiés sur d'autres sources Mises à jours prevues pour bientôt. Bonne prog.
Source
- unit perso;
-
- interface
-
- uses
- Windows,Messages,Dialogs,SysUtils,Math,Classes, Consts, ShellAPI, Forms ;
-
-
- type
- EInvalidDest = class(EStreamError);
- EFCantMove = class(EStreamError);
-
-
- //-------------------------------------------------------------------------------------
- // ------- DECLARATION DES PROCEDURES ET FONCTIONS ------------------------------------
- //-------------------------------------------------------------------------------------
-
-
- // Fonctions divers
- procedure TEMPO(temps:longint);
- function Crypter(str_pass_original : string ) : string;
-
- // Fonctions mathématiques
- function Arrondir( nombre : extended ; nbDecim : extended) : extended;
-
- // Liaison série RS232
- procedure InitPort;
- procedure OpenPort;
- procedure ClosePort;
- function Envoi_RS232( str_envoi : string) : boolean;
-
- // Fonctions système
- procedure SimuClick(bouton : integer ; x : DWord ; y : DWord);
-
- // Opérations sur fichiers et dossiers
- procedure CopieFichier(Const sourcefilename, targetfilename : string);
- procedure MakeDir(s:string);
- procedure MoveFile(const FileName, DestName: string);
- function GetFileSize(const FileName: string): LongInt;
- function FileDateTime(const FileName: string): TDateTime;
- function HasAttr(const FileName: string; Attr: Word): Boolean;
- function ExecuteFile(const FileName, Params, DefaultDir: string;
- ShowCmd: Integer): THandle;
-
- // Traitement sur chaînes de caractères
- function NumToString(str : string ; nb_0 : integer) : string;
- function EnleverCaracteres( str_chaine : string; position : integer; nb_car : integer) : string;
- function EnleverChaine( str_chaine_source : string ; str_chaine_a_effacer : string ) : string;
- function NombreRepetitionsChaine(str_chaine_source : string; chaine_a_compter : string ) : integer;
- function PresenceCaracteres(str_chaine_source : string ; chaine_carac : string) : boolean;
- function EnleverExtension(str : string) : string;
-
-
- // Déclaration de constantes
- const
-
- // Carcteres Speciaux
- NUMEROS = '0123456789';
- LETTRES_MIN = 'abcdefghijklmnopqrstuvwxyz';
- LETTRES_MAJ = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- INTERDITS_FICHIERS = ',;:!./*$?#{}][''';
-
- // Fonction enlever caracteres
- DEBUT = 0;
- FIN = 1;
-
- // Event Click Souris
- DROIT = 1;
- GAUCHE = 2;
- MILIEU = 3;
-
- NULL = 0;
-
- SInvalidDest = 'Le fichier de destination %s n''existe pas';
- SFCantMove = 'Impossible de déplacer %s';
-
-
- // Déclaration de variables globales
- var
-
- test : integer;
- DCB:TDCB;
- RS232_ouverte,test_RS232:Boolean;
- Hdl,Hdl2:THandle;
-
-
- implementation
-
- //*******************************************************************************
- //*******************************************************************************
- //****** ****************************
- //****** FONCTIONS SUR LES FICHIERS ET REPERTOIRES ****************************
- //****** ****************************
- //*******************************************************************************
- //*******************************************************************************
-
- { MoveFile procedure }
- {
- Moves the file passed in FileName to the directory specified in DestDir.
- Tries to just rename the file. If that fails, try to copy the file and
- delete the original.
-
- Raises an exception if the source file is read-only, and therefore cannot
- be deleted/moved.
- }
-
- procedure MoveFile(const FileName, DestName: string);
- var
- Destination: string;
- begin
- Destination := ExpandFileName(DestName); { expand the destination path }
- if not RenameFile(FileName, Destination) then { try just renaming }
- begin
- if HasAttr(FileName, faReadOnly) then { if it's read-only... }
- raise EFCantMove.Create(Format(SFCantMove, [FileName])); { we wouldn't be able to delete it }
- CopieFichier(FileName, Destination); { copy it over to destination...}
- // DeleteFile(FileName); { ...and delete the original }
- end;
- end;
-
- { GetFileSize function }
- {
- Returns the size of the named file without opening the file. If the file
- doesn't exist, returns -1.
- }
-
- function GetFileSize(const FileName: string): LongInt;
- var
- SearchRec: TSearchRec;
- begin
- if FindFirst(ExpandFileName(FileName), faAnyFile, SearchRec) = 0 then
- Result := SearchRec.Size
- else Result := -1;
- end;
-
-
- function FileDateTime(const FileName: string): System.TDateTime;
- begin
- Result := FileDateToDateTime(FileAge(FileName));
- end;
-
-
- function HasAttr(const FileName: string; Attr: Word): Boolean;
- begin
- Result := (FileGetAttr(FileName) and Attr) = Attr;
- end;
-
-
- function ExecuteFile(const FileName, Params, DefaultDir: string;
- ShowCmd: Integer): THandle;
- var
- zFileName, zParams, zDir: array[0..79] of Char;
- begin
- Result := ShellExecute(Application.MainForm.Handle, nil,
- StrPCopy(zFileName, FileName), StrPCopy(zParams, Params),
- StrPCopy(zDir, DefaultDir), ShowCmd);
- end;
-
- {fabrique un sous-répertoire donné avec gestion d'erreurs}
-
- procedure MakeDir(s:string);
- var Rech: TSearchRec;
- begin
- {$I-}
- if FindFirst(s+'\*.*', faDirectory, Rech)<>0 then begin {s'il n'existe pas déjà}
- MkDir(s);
- if IOResult <> 0 then
- MessageDlg('Impossible de créer le répertoire '+s, mtError, [mbOk], 0);
- end;
- FindClose(Rech);
- {$I+}
- end;
-
- procedure CopieFichier(Const sourcefilename, targetfilename : string);
- var
- S,T : TFileStream;
- begin
-
- S := TFileStream.Create(sourcefilename, fmOpenRead);
- try
- T := TFileStream.Create(targetfilename, fmOpenWrite or fmCreate);
-
- try
- T.CopyFrom(S, S.Size);
- finally
- T.Free;
- end;
- finally
- S.Free;
- end;
- end;
-
-
-
-
-
- //*******************************************************************************
- //*******************************************************************************
- //****** ******************************
- //****** FONCTIONS SUR LES CHAINES DE CARACTERES ******************************
- //****** ******************************
- //*******************************************************************************
- //*******************************************************************************
-
- { Detecte si les caracteres envoyés en 2e parametre se trouvent dans la chaine
- correspondand au 1er parametre.
- Renvoi TRUE si les caracteres sont present dans la chaîne sinon FALSE}
-
- function EnleverExtension(str : string) : string;
- var
- taille, i : integer;
- str_temp : string;
-
- begin
-
- str_temp := str;
-
- taille := length(str);
-
- // On parcours la chaine de droite à gauche
- for i := taille-1 downto 0 do
- begin
- // Si on voit un point
- if Copy(str, i, 1) = '.' then
- begin
- str_temp := Copy(str, 0, i-1);
- break;
- end ;
-
- end;
-
- Result := str_temp;
-
- end;
-
- //-------------------------------------------------------------------------------
-
-
- function PresenceCaracteres(str_chaine_source : string ; chaine_carac : string) : boolean;
- var
- i : integer;
- str : string;
- bool_resultat : boolean;
- begin
-
- bool_resultat := false;
-
- for i := 1 to length(chaine_carac) do
- begin
-
- if Pos(chaine_carac[i], str_chaine_source) > 0 then
- begin
- bool_resultat := true;
- break;
- end;
-
- end;
-
- Result := bool_resultat;
- end;
-
-
-
- { Renvoi le nombre de repetitions d'une sous-chaine dans une chaine
- Si la sous-chaine n'est pas presente dans la chaine, la function renvoie 0 }
-
- function NombreRepetitionsChaine(str_chaine_source : string; chaine_a_compter : string ) : integer;
- var
- i : integer ;
- chaine : string;
- nb_iterations : integer;
- begin
-
- // On fait une copie
- chaine := str_chaine_source;
-
- // On ititialise le nb_iterations
- nb_iterations := 0;
-
- for i := 0 to length(str_chaine_source) do
- begin
-
- if EnleverChaine(chaine, chaine_a_compter) = 'NULL' then break
- else
- begin
- nb_iterations := nb_iterations + 1;
- chaine := EnleverChaine(chaine, chaine_a_compter);
- end;
- end;
-
- Result := nb_iterations;
-
- end;
-
-
- { Efface une sous-chaine dans une chaine
- Renvoi la chaine apres traitement si déroulement correct
- Si la chaine recherchée n'est pas trouvée elle renvoi 'NULL' }
-
- function EnleverChaine( str_chaine_source : string ; str_chaine_a_effacer : string ) : string ;
- var
- ipos : integer;
- str_resultat : string;
- begin
-
- // On cherche la position de la sous-chaine dans la chaine
- ipos := Pos( str_chaine_a_effacer, str_chaine_source);
-
- if ipos = 0 then str_resultat := 'NULL'
- else
- begin
-
- // On efface la sous-chaine
- Delete(str_chaine_source, ipos, length(str_chaine_a_effacer));
- str_resultat := str_chaine_source;
-
- end;
-
- Result := str_resultat;
-
- end;
-
- { Cette fonction enleve un certain nombre de carcteres à la fin ou au debut d'1 chaine
- Elle retourne la nouvelle chaine si tout se déroule correctement
- Sinon elle envoi 'NULL' }
-
- function EnleverCaracteres( str_chaine : string; position : integer; nb_car : integer) : string;
- var
- str_resultat : string;
- i : integer;
-
- begin
-
- // Si le nombre de caracteres à effacer est superieur a la longueur de la chaine
- if nb_car >= length(str_chaine) then str_resultat := 'NULL'
- else
- if position = DEBUT then
- begin
-
- str_resultat := Copy(str_chaine, nb_car + 1, length(str_chaine) - nb_car + 1);
-
- end
- else if position = FIN then
- begin
-
- str_resultat := Copy(str_chaine, 0, length(str_chaine) - nb_car);
-
- end
- else str_resultat := 'NULL';
-
- Result := str_resultat;
-
- end;
-
- { Formate une chaîne de caractères
- On formate la chaine 'str' en 'nb_0' caractères
- Si la longueur de 'str' < 'nb_o' alors on ajute des '0' devant 'str'
- sinon on retourne 'NULL'
- }
- function NumToString(str : string ; nb_0 : integer) : string;
- var
- len_str,i : integer;
- begin
-
- len_str := length(str);
-
- if len_str <= nb_0 then // si la chaîne est superieure au nombre de cacarteres du format voulu
- begin
-
- for i := 1 to (nb_0 - len_str) do str := '0' + str;
-
- end
- else if len_str > nb_0 then str := 'NULL';
-
- NumToString := str;
- end;
-
-
-
-
-
- //*******************************************************************************
- //*******************************************************************************
- //************** ************************************
- //************** FONCTIONS MATHEMATIQUES ************************************
- //************** ************************************
- //*******************************************************************************
- //*******************************************************************************
-
-
- function Arrondir( nombre : extended ; nbDecim : extended) : extended;
- var
- p10 : extended;
-
- begin
-
- if nbDecim = 2 then result := round(nombre * 100) / 100
- else
- begin
- p10 := Power(10, nbDecim);
- result := round(nombre * p10) / p10;
- end;
-
- end;
-
-
-
-
-
- //*******************************************************************************
- //*******************************************************************************
- //******************* **************************************
- //******************* FONCTIONS RS232 **************************************
- //******************* **************************************
- //*******************************************************************************
- //*******************************************************************************
-
-
- // Initialisation de la ligne RS232
- procedure InitPort;
- begin
- DCB.BaudRate:=CBR_9600;
- DCB.StopBits:=ONESTOPBIT;
- DCB.ByteSize:=8;
- DCB.Parity:=NOPARITY;
- DCB.DCBLength:=sizeof(DCB);
- end;
-
- // Ouverture de la ligne RS232
- procedure OpenPort;
- var
- ComTimeOut:TCommTimeOuts;
- begin
- if RS232_ouverte=false then begin
- initport;
- Hdl:=CreateFile('COM1',GENERIC_READ or GENERIC_WRITE,0,NIL,OPEN_EXISTING,0,Hdl2);
- SetCommState(Hdl,DCB); {Association du Handdle au DCB}
- EscapeCommFunction(Hdl,SETDTR); {Signal DTR à +12V}
- EscapeCommFunction(Hdl,CLRRTS); {Signal RTS à -12V}
- ComTimeOut.ReadTotalTimeoutConstant:=10;
- ComTimeOut.ReadTotalTimeoutmultiplier:=1;
- SetCommTimeouts(hdl,ComTimeOut);
- RS232_ouverte:=True;
- end;
- end;
-
- // Fermeture de la ligne RS232
- procedure ClosePort;
- begin
- CloseHandle(Hdl);
- RS232_ouverte:=False;
- end;
-
- // Envoie une chaîne de caractères sur la liaison série
- function Envoi_RS232( str_envoi : string) : boolean;
- var
- c:array[1..30] of char;
- len_valeur : integer;
-
- begin
-
- // Initilisation de la ligne RS232
- ClosePort;
- InitPort;
- OpenPort;
-
- // On détermine la taille de la chaîne à envoyer
- len_valeur := length( str_envoi );
-
- // on convertie la chaine en tableau
- StrPCopy(@c, str_envoi);
-
- // on écrit sur la ressource Hdl : RS232
- //Envoi_RS232 := WriteFile(Hdl,c,len_valeur,len_valeur,NIL);
-
- end;
-
-
- //*******************************************************************************
- //*******************************************************************************
- //************************** *******************************
- //************************** FONCTIONS SYSTEME *******************************
- //************************** *******************************
- //*******************************************************************************
- //*******************************************************************************
-
- { Simule un click de souris à un endroit donné en parametres.
- bouton represente le bouton a cliquer : CLICK_DROIT , CLICK_GAUCHE , CLICK_MILIEU.
- x , y : representent les coordonnées du click. Si x = y = NULL = 0 alors le click
- s'effectue a l'endroit ou se trouve le curseur}
-
- procedure SimuClick(bouton : integer ; x : DWord ; y : DWord);
- var
- x_temp, y_temp : DWord;
- begin
-
- Case bouton of
-
- MILIEU : begin
- mouse_event(MOUSEEVENTF_MIDDLEDOWN,x,y,0,0);
- mouse_event(MOUSEEVENTF_MIDDLEUP,x,y,0,0);
- end;
- DROIT : begin
- mouse_event(MOUSEEVENTF_RIGHTDOWN,x,y,0,0);
- mouse_event(MOUSEEVENTF_RIGHTUP,x,y,0,0);
- end;
- GAUCHE : begin
- mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0);
- mouse_event(MOUSEEVENTF_LEFTUP,x,y,0,0);
- end;
-
- end;
- end;
-
-
-
-
-
-
- //*******************************************************************************
- //*******************************************************************************
- //************************** ********************************
- //************************** FONCTIONS DIVERS ********************************
- //************************** ********************************
- //*******************************************************************************
- //*******************************************************************************
-
-
- // Renvoie une chaîne de caractères cryptée en modifiant la chine passée en paramettre
- // A titre indicatif 'a' = 8.91
- function Crypter(str_pass_original : string ) : string;
- var
- i ,iVal: integer;
- str : string;
-
- begin
-
- str := '';
- for i := 1 to length(str_pass_original) do str := str + floattostr(Arrondir((Ord(str_pass_original[i]) + 1) / 11 , 2));
- result := str;
-
- end;
-
- // Tempo en millisecondes
- procedure TEMPO(temps:longint);
- var
- heur,minute,seconde,msec:Word;
- DepartEnSec,heureEnSec:longint;
- begin
- DecodeTime(Time,heur,minute,seconde,msec);
- DepartEnSec:=heur*3600000+minute*60000+seconde*1000+msec;
- DecodeTime(Time,heur,minute,seconde,msec);
- heureEnSec:=heur*3600000+minute*60000+seconde*1000+msec;
- while heureEnSec - DepartEnSec < temps do begin
- DecodeTime(Time,heur,minute,seconde,msec);
- heureEnSec:=heur*3600000+minute*60000+seconde*1000+msec;
- end;
- end;
-
- end.
unit perso;
interface
uses
Windows,Messages,Dialogs,SysUtils,Math,Classes, Consts, ShellAPI, Forms ;
type
EInvalidDest = class(EStreamError);
EFCantMove = class(EStreamError);
//-------------------------------------------------------------------------------------
// ------- DECLARATION DES PROCEDURES ET FONCTIONS ------------------------------------
//-------------------------------------------------------------------------------------
// Fonctions divers
procedure TEMPO(temps:longint);
function Crypter(str_pass_original : string ) : string;
// Fonctions mathématiques
function Arrondir( nombre : extended ; nbDecim : extended) : extended;
// Liaison série RS232
procedure InitPort;
procedure OpenPort;
procedure ClosePort;
function Envoi_RS232( str_envoi : string) : boolean;
// Fonctions système
procedure SimuClick(bouton : integer ; x : DWord ; y : DWord);
// Opérations sur fichiers et dossiers
procedure CopieFichier(Const sourcefilename, targetfilename : string);
procedure MakeDir(s:string);
procedure MoveFile(const FileName, DestName: string);
function GetFileSize(const FileName: string): LongInt;
function FileDateTime(const FileName: string): TDateTime;
function HasAttr(const FileName: string; Attr: Word): Boolean;
function ExecuteFile(const FileName, Params, DefaultDir: string;
ShowCmd: Integer): THandle;
// Traitement sur chaînes de caractères
function NumToString(str : string ; nb_0 : integer) : string;
function EnleverCaracteres( str_chaine : string; position : integer; nb_car : integer) : string;
function EnleverChaine( str_chaine_source : string ; str_chaine_a_effacer : string ) : string;
function NombreRepetitionsChaine(str_chaine_source : string; chaine_a_compter : string ) : integer;
function PresenceCaracteres(str_chaine_source : string ; chaine_carac : string) : boolean;
function EnleverExtension(str : string) : string;
// Déclaration de constantes
const
// Carcteres Speciaux
NUMEROS = '0123456789';
LETTRES_MIN = 'abcdefghijklmnopqrstuvwxyz';
LETTRES_MAJ = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
INTERDITS_FICHIERS = ',;:!./*$?#{}][''';
// Fonction enlever caracteres
DEBUT = 0;
FIN = 1;
// Event Click Souris
DROIT = 1;
GAUCHE = 2;
MILIEU = 3;
NULL = 0;
SInvalidDest = 'Le fichier de destination %s n''existe pas';
SFCantMove = 'Impossible de déplacer %s';
// Déclaration de variables globales
var
test : integer;
DCB:TDCB;
RS232_ouverte,test_RS232:Boolean;
Hdl,Hdl2:THandle;
implementation
//*******************************************************************************
//*******************************************************************************
//****** ****************************
//****** FONCTIONS SUR LES FICHIERS ET REPERTOIRES ****************************
//****** ****************************
//*******************************************************************************
//*******************************************************************************
{ MoveFile procedure }
{
Moves the file passed in FileName to the directory specified in DestDir.
Tries to just rename the file. If that fails, try to copy the file and
delete the original.
Raises an exception if the source file is read-only, and therefore cannot
be deleted/moved.
}
procedure MoveFile(const FileName, DestName: string);
var
Destination: string;
begin
Destination := ExpandFileName(DestName); { expand the destination path }
if not RenameFile(FileName, Destination) then { try just renaming }
begin
if HasAttr(FileName, faReadOnly) then { if it's read-only... }
raise EFCantMove.Create(Format(SFCantMove, [FileName])); { we wouldn't be able to delete it }
CopieFichier(FileName, Destination); { copy it over to destination...}
// DeleteFile(FileName); { ...and delete the original }
end;
end;
{ GetFileSize function }
{
Returns the size of the named file without opening the file. If the file
doesn't exist, returns -1.
}
function GetFileSize(const FileName: string): LongInt;
var
SearchRec: TSearchRec;
begin
if FindFirst(ExpandFileName(FileName), faAnyFile, SearchRec) = 0 then
Result := SearchRec.Size
else Result := -1;
end;
function FileDateTime(const FileName: string): System.TDateTime;
begin
Result := FileDateToDateTime(FileAge(FileName));
end;
function HasAttr(const FileName: string; Attr: Word): Boolean;
begin
Result := (FileGetAttr(FileName) and Attr) = Attr;
end;
function ExecuteFile(const FileName, Params, DefaultDir: string;
ShowCmd: Integer): THandle;
var
zFileName, zParams, zDir: array[0..79] of Char;
begin
Result := ShellExecute(Application.MainForm.Handle, nil,
StrPCopy(zFileName, FileName), StrPCopy(zParams, Params),
StrPCopy(zDir, DefaultDir), ShowCmd);
end;
{fabrique un sous-répertoire donné avec gestion d'erreurs}
procedure MakeDir(s:string);
var Rech: TSearchRec;
begin
{$I-}
if FindFirst(s+'\*.*', faDirectory, Rech)<>0 then begin {s'il n'existe pas déjà}
MkDir(s);
if IOResult <> 0 then
MessageDlg('Impossible de créer le répertoire '+s, mtError, [mbOk], 0);
end;
FindClose(Rech);
{$I+}
end;
procedure CopieFichier(Const sourcefilename, targetfilename : string);
var
S,T : TFileStream;
begin
S := TFileStream.Create(sourcefilename, fmOpenRead);
try
T := TFileStream.Create(targetfilename, fmOpenWrite or fmCreate);
try
T.CopyFrom(S, S.Size);
finally
T.Free;
end;
finally
S.Free;
end;
end;
//*******************************************************************************
//*******************************************************************************
//****** ******************************
//****** FONCTIONS SUR LES CHAINES DE CARACTERES ******************************
//****** ******************************
//*******************************************************************************
//*******************************************************************************
{ Detecte si les caracteres envoyés en 2e parametre se trouvent dans la chaine
correspondand au 1er parametre.
Renvoi TRUE si les caracteres sont present dans la chaîne sinon FALSE}
function EnleverExtension(str : string) : string;
var
taille, i : integer;
str_temp : string;
begin
str_temp := str;
taille := length(str);
// On parcours la chaine de droite à gauche
for i := taille-1 downto 0 do
begin
// Si on voit un point
if Copy(str, i, 1) = '.' then
begin
str_temp := Copy(str, 0, i-1);
break;
end ;
end;
Result := str_temp;
end;
//-------------------------------------------------------------------------------
function PresenceCaracteres(str_chaine_source : string ; chaine_carac : string) : boolean;
var
i : integer;
str : string;
bool_resultat : boolean;
begin
bool_resultat := false;
for i := 1 to length(chaine_carac) do
begin
if Pos(chaine_carac[i], str_chaine_source) > 0 then
begin
bool_resultat := true;
break;
end;
end;
Result := bool_resultat;
end;
{ Renvoi le nombre de repetitions d'une sous-chaine dans une chaine
Si la sous-chaine n'est pas presente dans la chaine, la function renvoie 0 }
function NombreRepetitionsChaine(str_chaine_source : string; chaine_a_compter : string ) : integer;
var
i : integer ;
chaine : string;
nb_iterations : integer;
begin
// On fait une copie
chaine := str_chaine_source;
// On ititialise le nb_iterations
nb_iterations := 0;
for i := 0 to length(str_chaine_source) do
begin
if EnleverChaine(chaine, chaine_a_compter) = 'NULL' then break
else
begin
nb_iterations := nb_iterations + 1;
chaine := EnleverChaine(chaine, chaine_a_compter);
end;
end;
Result := nb_iterations;
end;
{ Efface une sous-chaine dans une chaine
Renvoi la chaine apres traitement si déroulement correct
Si la chaine recherchée n'est pas trouvée elle renvoi 'NULL' }
function EnleverChaine( str_chaine_source : string ; str_chaine_a_effacer : string ) : string ;
var
ipos : integer;
str_resultat : string;
begin
// On cherche la position de la sous-chaine dans la chaine
ipos := Pos( str_chaine_a_effacer, str_chaine_source);
if ipos = 0 then str_resultat := 'NULL'
else
begin
// On efface la sous-chaine
Delete(str_chaine_source, ipos, length(str_chaine_a_effacer));
str_resultat := str_chaine_source;
end;
Result := str_resultat;
end;
{ Cette fonction enleve un certain nombre de carcteres à la fin ou au debut d'1 chaine
Elle retourne la nouvelle chaine si tout se déroule correctement
Sinon elle envoi 'NULL' }
function EnleverCaracteres( str_chaine : string; position : integer; nb_car : integer) : string;
var
str_resultat : string;
i : integer;
begin
// Si le nombre de caracteres à effacer est superieur a la longueur de la chaine
if nb_car >= length(str_chaine) then str_resultat := 'NULL'
else
if position = DEBUT then
begin
str_resultat := Copy(str_chaine, nb_car + 1, length(str_chaine) - nb_car + 1);
end
else if position = FIN then
begin
str_resultat := Copy(str_chaine, 0, length(str_chaine) - nb_car);
end
else str_resultat := 'NULL';
Result := str_resultat;
end;
{ Formate une chaîne de caractères
On formate la chaine 'str' en 'nb_0' caractères
Si la longueur de 'str' < 'nb_o' alors on ajute des '0' devant 'str'
sinon on retourne 'NULL'
}
function NumToString(str : string ; nb_0 : integer) : string;
var
len_str,i : integer;
begin
len_str := length(str);
if len_str <= nb_0 then // si la chaîne est superieure au nombre de cacarteres du format voulu
begin
for i := 1 to (nb_0 - len_str) do str := '0' + str;
end
else if len_str > nb_0 then str := 'NULL';
NumToString := str;
end;
//*******************************************************************************
//*******************************************************************************
//************** ************************************
//************** FONCTIONS MATHEMATIQUES ************************************
//************** ************************************
//*******************************************************************************
//*******************************************************************************
function Arrondir( nombre : extended ; nbDecim : extended) : extended;
var
p10 : extended;
begin
if nbDecim = 2 then result := round(nombre * 100) / 100
else
begin
p10 := Power(10, nbDecim);
result := round(nombre * p10) / p10;
end;
end;
//*******************************************************************************
//*******************************************************************************
//******************* **************************************
//******************* FONCTIONS RS232 **************************************
//******************* **************************************
//*******************************************************************************
//*******************************************************************************
// Initialisation de la ligne RS232
procedure InitPort;
begin
DCB.BaudRate:=CBR_9600;
DCB.StopBits:=ONESTOPBIT;
DCB.ByteSize:=8;
DCB.Parity:=NOPARITY;
DCB.DCBLength:=sizeof(DCB);
end;
// Ouverture de la ligne RS232
procedure OpenPort;
var
ComTimeOut:TCommTimeOuts;
begin
if RS232_ouverte=false then begin
initport;
Hdl:=CreateFile('COM1',GENERIC_READ or GENERIC_WRITE,0,NIL,OPEN_EXISTING,0,Hdl2);
SetCommState(Hdl,DCB); {Association du Handdle au DCB}
EscapeCommFunction(Hdl,SETDTR); {Signal DTR à +12V}
EscapeCommFunction(Hdl,CLRRTS); {Signal RTS à -12V}
ComTimeOut.ReadTotalTimeoutConstant:=10;
ComTimeOut.ReadTotalTimeoutmultiplier:=1;
SetCommTimeouts(hdl,ComTimeOut);
RS232_ouverte:=True;
end;
end;
// Fermeture de la ligne RS232
procedure ClosePort;
begin
CloseHandle(Hdl);
RS232_ouverte:=False;
end;
// Envoie une chaîne de caractères sur la liaison série
function Envoi_RS232( str_envoi : string) : boolean;
var
c:array[1..30] of char;
len_valeur : integer;
begin
// Initilisation de la ligne RS232
ClosePort;
InitPort;
OpenPort;
// On détermine la taille de la chaîne à envoyer
len_valeur := length( str_envoi );
// on convertie la chaine en tableau
StrPCopy(@c, str_envoi);
// on écrit sur la ressource Hdl : RS232
//Envoi_RS232 := WriteFile(Hdl,c,len_valeur,len_valeur,NIL);
end;
//*******************************************************************************
//*******************************************************************************
//************************** *******************************
//************************** FONCTIONS SYSTEME *******************************
//************************** *******************************
//*******************************************************************************
//*******************************************************************************
{ Simule un click de souris à un endroit donné en parametres.
bouton represente le bouton a cliquer : CLICK_DROIT , CLICK_GAUCHE , CLICK_MILIEU.
x , y : representent les coordonnées du click. Si x = y = NULL = 0 alors le click
s'effectue a l'endroit ou se trouve le curseur}
procedure SimuClick(bouton : integer ; x : DWord ; y : DWord);
var
x_temp, y_temp : DWord;
begin
Case bouton of
MILIEU : begin
mouse_event(MOUSEEVENTF_MIDDLEDOWN,x,y,0,0);
mouse_event(MOUSEEVENTF_MIDDLEUP,x,y,0,0);
end;
DROIT : begin
mouse_event(MOUSEEVENTF_RIGHTDOWN,x,y,0,0);
mouse_event(MOUSEEVENTF_RIGHTUP,x,y,0,0);
end;
GAUCHE : begin
mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,x,y,0,0);
end;
end;
end;
//*******************************************************************************
//*******************************************************************************
//************************** ********************************
//************************** FONCTIONS DIVERS ********************************
//************************** ********************************
//*******************************************************************************
//*******************************************************************************
// Renvoie une chaîne de caractères cryptée en modifiant la chine passée en paramettre
// A titre indicatif 'a' = 8.91
function Crypter(str_pass_original : string ) : string;
var
i ,iVal: integer;
str : string;
begin
str := '';
for i := 1 to length(str_pass_original) do str := str + floattostr(Arrondir((Ord(str_pass_original[i]) + 1) / 11 , 2));
result := str;
end;
// Tempo en millisecondes
procedure TEMPO(temps:longint);
var
heur,minute,seconde,msec:Word;
DepartEnSec,heureEnSec:longint;
begin
DecodeTime(Time,heur,minute,seconde,msec);
DepartEnSec:=heur*3600000+minute*60000+seconde*1000+msec;
DecodeTime(Time,heur,minute,seconde,msec);
heureEnSec:=heur*3600000+minute*60000+seconde*1000+msec;
while heureEnSec - DepartEnSec < temps do begin
DecodeTime(Time,heur,minute,seconde,msec);
heureEnSec:=heur*3600000+minute*60000+seconde*1000+msec;
end;
end;
end.
Historique
- 22 mars 2005 10:21:34 :
- Modif du nom
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
[FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|