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;
S is the string from which characters are to be copied | |
Index is the starting position from where characters are to be copied
(1-based index) | |
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;
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;