Rotation 90° jpg

 

RotateJPG('source.jpg', 'destination.jpg');

 

 

uses
Vcl.Graphics, Jpeg;

procedure RotateJPG(const ASourceFileName, ADestinationFileName: string);
var
Picture: TPicture;
Bitmap: TBitmap;
JPEGImage: TJPEGImage;
begin
Picture := TPicture.Create;
try
// Load the JPG image from file
Picture.LoadFromFile(ASourceFileName);

// Create a bitmap from the JPG image
Bitmap := TBitmap.Create;
try
Bitmap.Assign(Picture.Graphic);

// Rotate the bitmap 90 degrees clockwise
Bitmap.Canvas.Lock;
try
Bitmap.Canvas.StretchDraw(Rect(0, 0, Bitmap.Height, Bitmap.Width),
Bitmap);
finally
Bitmap.Canvas.Unlock;
end;

// Save the rotated image as JPG
JPEGImage := TJPEGImage.Create;
try
JPEGImage.Assign(Bitmap);
JPEGImage.SaveToFile(ADestinationFileName);
finally
JPEGImage.Free;
end;
finally
Bitmap.Free;
end;
finally
Picture.Free;
end;
end;

 

function Copy(const S: string; Index, Count: Integer): string;
 

bullet S is the string from which characters are to be copied
bullet Index is the starting position from where characters are to be copied (1-based index)
bullet Count is the number of characters to be copied from the given string starting from the specified index

uses SysUtils;

var
FileName: string;
begin
FileName := 'C:\example.txt';

if FileExists(FileName) then
begin
if DeleteFile(FileName) then
ShowMessage('File deleted successfully')
else
ShowMessage('Failed to delete file');
end
else
ShowMessage('File not found');
end;
 

uses Dialogs;

var
UserChoice: Integer;
begin
UserChoice := ShowMessage('Do you want to continue?', mtConfirmation, mbYesNoCancel, 0);

if UserChoice = mrYes then
ShowMessage('You chose Yes')
else if UserChoice = mrNo then
ShowMessage('You chose No')
else if UserChoice = mrCancel then
ShowMessage('You chose Cancel');
end;
 

 

In this example, we call the ShowMessage function with additional parameters to customize the dialog box.

The first parameter is the message to display,

the second parameter is the message type (mtConfirmation in this case),

the third parameter is the set of buttons to display (mbYesNoCancel in this case),

and the fourth parameter is the default button (0 in this case). The return value of ShowMessage is stored in the UserChoice variable, which can then be used to determine which button the user clicked.

var
x: Integer;
begin
x := 10;

if x > 5 then
begin
ShowMessage('x is greater than 5');
end
else
begin
ShowMessage('x is less than or equal to 5');
end;
end;
 

----------x et y

var
x, y: Integer;
begin
x := 10;
y := 20;

if x > 5 then
begin
    if y > 15 then
     begin
        ShowMessage('x is greater than 5 and y is greater than 15');
    end
        else
    begin
        ShowMessage('x is greater than 5 but y is not greater than 15');
    end;
end
else
begin
  ShowMessage('x is less than or equal to 5');
end;


end;
 

 

renommer fichier

procedure RenameFile(const OldName, NewName: string);
begin
if not FileExists(OldName) then
raise Exception.Create('Le fichier spécifié n''existe pas.');
if FileExists(NewName) then
raise Exception.Create('Un fichier avec ce nom existe déjà.');
if not RenameFile(OldName, NewName) then
raise Exception.Create('Impossible de renommer le fichier.');
end;

 

Dans cet exemple, la procédure RenameFile prend en paramètre les noms de l'ancien fichier et du nouveau fichier. La procédure vérifie d'abord si le fichier original existe en utilisant la fonction FileExists. Si le fichier n'existe pas, une exception est levée.

Ensuite, la procédure vérifie si un fichier avec le nom du nouveau fichier existe déjà. Si c'est le cas, une exception est levée.

Enfin, la procédure appelle la fonction RenameFile pour renommer le fichier. Si la fonction retourne False, cela signifie que le renommage a échoué et une exception est levée.

Vous pouvez utiliser cette procédure dans votre code Delphi pour renommer un fichier en appelant simplement la fonction RenameFile avec les noms de l'ancien et du nouveau fichier.

Code assembleur nombre premier

section .text
global _start

_start:
; Initialisation des registres
mov ebx, 2 ; ebx = compteur de nombres
mov ecx, 2 ; ecx = compteur de diviseurs

; Affichage de l'entête
mov eax, 4 ; syscall pour afficher
mov ebx, 1 ; descripteur de fichier pour stdout
mov ecx, message ; adresse du message à afficher
mov edx, message_len ; longueur du message
int 0x80

loop_start:
; Test de primalité
mov eax, ebx
div ecx
cmp edx, 0 ; vérifie si le reste est nul
jne not_prime ; saute à la prochaine itération si le nombre est composé

; Affichage du nombre premier
mov eax, 4 ; syscall pour afficher
mov ebx, 1 ; descripteur de fichier pour stdout
mov ecx, [ebx] ; affiche la valeur de ebx
add ecx, 48 ; convertit la valeur ASCII
mov edx, 1 ; une seule caractère à afficher
int 0x80

not_prime:
; Incrémentation des compteurs
inc ecx ; incrémente le compteur de diviseurs
cmp ecx, ebx ; vérifie si le compteur de diviseurs a atteint la valeur de ebx
jne loop_start ; saute à la prochaine itération si non

; Incrémentation du compteur de nombres
inc ebx
cmp ebx, 100 ; vérifie si nous avons atteint 100 nombres
jle loop_start ; continue la boucle si nous n'avons pas atteint 100 nombres

; Sortie du programme
mov eax, 1 ; syscall pour exit
xor ebx, ebx ; code de retour zéro
int 0x80

section .data
message db 'Les nombres premiers entre 2 et 100 sont :', 10
message_len equ $ - message
 

 

Delphi --- assembleur

 

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Memo1: TMemo;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}



procedure UDivMod(const Dividend, Divisor: LongWord; var Result, Remainder: LongWord); register;
asm
push ebx;
mov ebx,edx;
xor edx,edx;
div ebx;
mov ebx,Remainder;
mov [ecx],eax;
mov [ebx],edx;
pop ebx;
end;

function IsPrimeNumber(const Number: LongWord): boolean;
var DivisorA,
DivisorB,
Modulo,
DivisorsCount : LongWord;
begin
Result := false;
if Number < 2 then
exit;
DivisorA := 1;
DivisorB := Number;
Modulo := 0;
DivisorsCount := 0;
if DivisorA < DivisorB then
repeat
UDivMod(Number, DivisorA, DivisorB, Modulo);
if Modulo = 0 then
DivisorsCount := DivisorsCount + 2;
DivisorA := DivisorA + 1;
until (DivisorA >= DivisorB) or (DivisorsCount >= 3);
Result := DivisorsCount = 2;
end;




procedure TForm1.Button1Click(Sender: TObject);
var
i,nb,max,min : integer;

begin
nb:=0;
form1.Memo1.Clear;
min := strtoint(form1.Edit2.Text);
max := strtoint(form1.Edit1.Text);
form1.Memo1.Lines.Add('Heure début :' ) ;
form1.Memo1.Lines.Add(timetostr(now)) ;

for i := min to max do
begin
//form1.Memo1.Lines.Add(inttostr(i)) ;
if IsPrimeNumber(i) then
begin
inc(nb);
// form1.Memo1.Lines.Add(inttostr(i))
end;

end;

form1.Memo1.Lines.Add(inttostr(nb)) ;
form1.Memo1.Lines.Add('Heure fin : ') ;
form1.Memo1.Lines.Add(timetostr(now)) ;
end;

end.

 

Nombre premier code Dephi simple écrit les nombres en console.

procedure FindPrimes(n: Integer);

var i, j: Integer;

 isPrime: Boolean;

 begin

WriteLn('Les nombres premiers entre 1 et ', n, ' sont :');

for i := 2 to n do begin isPrime := True;

for j := 2 to i - 1 do begin if i mod j = 0 then begin isPrime := False;

 Break;

end;

 end;

if isPrime then WriteLn(i);

end;

end;

procedure FindPrimes(n: Integer);
var
i, j: Integer;
isPrime: Boolean;
begin
WriteLn('Les nombres premiers entre 1 et ', n, ' sont :');
for i := 2 to n do
begin
isPrime := True;
for j := 2 to i - 1 do
begin
if i mod j = 0 then
begin
isPrime := False;
Break;
end;
end;
if isPrime then
WriteLn(i);
end;
end;