Delphi

Delphi
Il n’y a pas du code de fou, mais des fonctions simples pour aider des calculs de tous les jours. Enfin presque tous les jours …


Calculer un age
function CalculateAge(Birthday, CurrentDate: TDate): Integer;
var
Month, Day, Year, CurrentYear, CurrentMonth, CurrentDay: Word;
begin
DecodeDate(Birthday, Year, Month, Day);
DecodeDate(CurrentDate, CurrentYear, CurrentMonth, CurrentDay);
if (Year = CurrentYear) and (Month = CurrentMonth) and (Day = CurrentDay) then
begin
Result := 0;
end
else
begin
Result := CurrentYear – Year;
if (Month > CurrentMonth) then
Dec(Result)
else
begin
if Month = CurrentMonth then
if (Day > CurrentDay) then
Dec(Result);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(CalculateAge(StrToDate(’01/07/1970′), Date)));
end;


Calculer un temps travail en fonction de deux heures (heure debut/heure fin)
Function TempsTravail(heure1,heure2,min1,min2:string):string;
var
difheure,diffmin:string;
begin
if min1=min2 then
Begin
difheure:=inttostr(strtoint(heure2)-strtoint(heure1));
diffmin:=’00’;
end;
if min1 Begin
difheure:=inttostr(strtoint(heure2)-strtoint(heure1));
diffmin:=inttostr(strtoint(min2)-strtoint(min1));
end;
if min1>min2 then
Begin
difheure:=inttostr(strtoint(heure2)-strtoint(heure1));
difheure:=inttoStr(StrToInt(difheure)-1);
If strtoint(min2)=0 then
begin min2:=’60’;
diffmin:=inttostr(strtoint(min2)-strtoint(min1));
end else diffmin:=inttostr(strtoint(min1)-strtoint(min2));
If (strtoint(min1)=45) and (strtoint(min2)=30) then
diffmin:=’45’;
If (strtoint(min1)=30) and (strtoint(min2)=15) then
diffmin:=’45’;
end;
if length(difheure)=1 then difheure:=’0’+difheure;
if length(diffmin)=1 then diffmin:=’0’+diffmin;
Result:=difheure+’:’+diffmin;;
end;


Transcoder le mois en lettre
Function MoisEnCours(Mois:INTEGER):string;
begin
Case Mois Of
1:result:=’Janvier’ ;
2:result:=’Février’ ;
3:result:=’Mars’ ;
4:result:=’Avril’ ;
5:result:=’Mai’ ;
6:result:=’Juin’ ;
7:result:=’Juillet’ ;
8:result:=’Août’ ;
9:result:=’Septembre’ ;
10:result:=’Octobre’ ;
11:result:=’Novembre’ ;
12:result:=’Décembre’ ;
end;
end;


Charger un Csv dans un StringGrid
Le Csv est un fichier texte lisible sous excel.Les colonnes sont déclarées par un ; ou une ,
Il suffit de charger le fichier dans une listbox et de mettre le code ci dessous. Dans l’exemple la listbox LB, la séparation ;
LB.Items.LoardFromFile(ExtractFilePath(Application.exename)+’MonFichier.csv’);
with SG do
begin
// remplir les cellules
LigneCell:=0;
CollCell:=0;
For cptd:=2 to LB.ITEMS.Count-1 do
Begin
for cpt:=1 to Length(LB.ITEMS[cptd]) do
Begin
If copy(LB.ITEMS[cptd],cpt,1)<>’;’ then
Begin
Cells[CollCell,LigneCell]:=Cells[CollCell,LigneCell]+copy(LB.items[cptd],cpt,1);
end Else
Begin
CollCell:=CollCell+1;
End;
end;
if cptd LigneCell:=LigneCell+1;
CollCell:=0;
end;
END;


Enregistrer / Charger un TStringGrid vers/A partir un fichier
procedure SaveStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
var
f : TextFile;
i, k : Integer;
begin
AssignFile(f, FileName);
Rewrite(f);
with StringGrid do
begin
// Ecrire le nombre de colones et lignes
Writeln(f, ColCount);
Writeln(f, RowCount);
for i := 0 to ColCount – 1 do
for k := 0 to RowCount – 1 do
Writeln(F, Cells[i,k]);
end;
CloseFile(F);
end;
// Charger un TStringGrid ‡ partir d’un fichier
procedure LoadStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
var
f : TextFile;
iTmp, i, k : Integer;
strTemp : string;
begin
AssignFile(f, FileName);
Reset(f);
with StringGrid do
begin
// Nombre de colonnes
Readln(f, iTmp);
ColCount := iTmp;
// Nombre de lignes
Readln(f, iTmp);
RowCount := iTmp;
for i := 0 to ColCount – 1 do
for k := 0 to RowCount – 1 do
begin
Readln(f, strTemp);
Cells[i,k] := strTemp;
end;
end;
CloseFile(f);
end;
///Exemple
procedure TForm1.Button1Click(Sender: TObject);
begin
SaveStringGrid(StringGrid1,’c: emp.txt’);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
LoadStringGrid(StringGrid1,’c: emp.txt’);
end;