- {
- pour commencer créons un type TAviRes qui comporterat 2 integer
- }
-
- type
- TAviRes = record
- width,
- height : integer;
- end;
-
-
- {
- Ensuite notre fonction qui vas bien.
- Fonction GetAviResolution avec un retour de type TAviRes
- }
-
- function GetAviResolution(filename : string) : TAviRes;
- {
- AAAH! ma chere fonction SHL8 qui permet convertir une addition d'octets en entier 16bits
- ici SHL8() est integrée a GetAviResolution(), mais rien ne vous empeche de l'extraire d'ici.
- }
- function Shl8(int : integer) : integer;
- begin
- { simple comme bonjour! on decale de 8 vers la droite (voir SHL et SHR dans l'aide delphi) }
- result := int shl 8;
- end;
-
- { declaration des variables }
- var
- FOB : file of byte; { on lit des octets, pas des caracteres donc ... file of byte }
- Oct1,Oct2 : byte; { j'aurais pus faire un tableau array[1..2] of byte mais ... }
- begin
- try
- { on assigne FileName a FOB }
- AssignFile(FOB,FileName);
- { on ouvre le fichier }
- Reset(FOB);
- { on positionne la lecture a l'offset $40 (hexa) soit l'octet 64 (decimal) }
- seek(FOB,$40);
- { on lit les deux octets qui stock la largeur de la video }
- read(FOB, Oct1, Oct2);
- { on convertis puis on renvois la largeur dans width }
- Result.Width := shl8(Oct1+Oct2);
- { on positionne la lecture a l'offset $44 (hexa) soit l'octet 68 (decimal) }
- seek(FOB,$44);
- { on lit les deux octets qui stock la hauteur de la video }
- read(FOB, Oct1, Oct2);
- { on convertis puis on renvois la hauteur dans height }
- Result.Height := shl8(Oct1+Oct2);
- finally
- { que ça ce passe bien ou pas on ferme le fichier }
- CloseFile(FOB);
- end;
- end;
-
- {
- Exemple d'utilisation de GetAviResolution()
- }
-
- procedure TForm1.Button1Click(Sender : TObject);
- { on crée une variable de type TAviRes pour eviter les apels inutile a GetAviResolution }
- var CurrentAviFile : TAviRes;
- begin
- { on ouvre le fichier }
- if opendialog1.Execute then begin
- { on recupere la resolution de la video }
- CurrentAvifile := GetAviResolution(OpenDialog1.FileName);
- { on affiche la resolution dans un simple TLabel avec Format() }
- Label1.Caption := format('%d x %d', [CurrentAviFile.Width, CurrentAviFile.Height]);
- end;
- end;
{
pour commencer créons un type TAviRes qui comporterat 2 integer
}
type
TAviRes = record
width,
height : integer;
end;
{
Ensuite notre fonction qui vas bien.
Fonction GetAviResolution avec un retour de type TAviRes
}
function GetAviResolution(filename : string) : TAviRes;
{
AAAH! ma chere fonction SHL8 qui permet convertir une addition d'octets en entier 16bits
ici SHL8() est integrée a GetAviResolution(), mais rien ne vous empeche de l'extraire d'ici.
}
function Shl8(int : integer) : integer;
begin
{ simple comme bonjour! on decale de 8 vers la droite (voir SHL et SHR dans l'aide delphi) }
result := int shl 8;
end;
{ declaration des variables }
var
FOB : file of byte; { on lit des octets, pas des caracteres donc ... file of byte }
Oct1,Oct2 : byte; { j'aurais pus faire un tableau array[1..2] of byte mais ... }
begin
try
{ on assigne FileName a FOB }
AssignFile(FOB,FileName);
{ on ouvre le fichier }
Reset(FOB);
{ on positionne la lecture a l'offset $40 (hexa) soit l'octet 64 (decimal) }
seek(FOB,$40);
{ on lit les deux octets qui stock la largeur de la video }
read(FOB, Oct1, Oct2);
{ on convertis puis on renvois la largeur dans width }
Result.Width := shl8(Oct1+Oct2);
{ on positionne la lecture a l'offset $44 (hexa) soit l'octet 68 (decimal) }
seek(FOB,$44);
{ on lit les deux octets qui stock la hauteur de la video }
read(FOB, Oct1, Oct2);
{ on convertis puis on renvois la hauteur dans height }
Result.Height := shl8(Oct1+Oct2);
finally
{ que ça ce passe bien ou pas on ferme le fichier }
CloseFile(FOB);
end;
end;
{
Exemple d'utilisation de GetAviResolution()
}
procedure TForm1.Button1Click(Sender : TObject);
{ on crée une variable de type TAviRes pour eviter les apels inutile a GetAviResolution }
var CurrentAviFile : TAviRes;
begin
{ on ouvre le fichier }
if opendialog1.Execute then begin
{ on recupere la resolution de la video }
CurrentAvifile := GetAviResolution(OpenDialog1.FileName);
{ on affiche la resolution dans un simple TLabel avec Format() }
Label1.Caption := format('%d x %d', [CurrentAviFile.Width, CurrentAviFile.Height]);
end;
end;