Kezdőoldal » Számítástechnika » Programozás » Delphiben szeretnék írni egy...

Delphiben szeretnék írni egy képkonvertáló programot?

Figyelt kérdés

A programnak az lenne a fő funkciója hogy a mappaszerkezet megtartásával pl c: meghajtóról konvertálna ".tif" fájlokat d: meghajtóra ugyanazzal a mappa struktúrával ami nagyon fontos. egyébb plussz funkció hogy 12 óránként autómatikusan le kellene futnia ugy hogy megkérdezi hogy most konvertálhat e.

kellene bele egy statusbar ami a konvertálás folyamatát jelzi, egy olyan funkció hogy vezessen egy log.csv fájlt a konvertálások idejéről és hogy mit hova konvertált. ebben kérnék segítséget. köszönöm


2015. szept. 1. 20:37
1 2 3
 11/24 A kérdező kommentje:
Tudom-tudom. Már most befejezetem a Vbscript és Vba tanulását. Mostmar rá térek a Delphi tanulgatasara. Bár ahogy nézegettem elég kínai egyenlőre. Majd meglatjuk hogy fog menni. Majd esetleg ha valamit nem értek benne akkor a segítségedet kérem majd.
2015. szept. 4. 13:56
 12/24 SimkoL ***** válasza:
Az a Pascal, Delphi egyszerűségében a Basic után van - az alap dolgokban -
2015. szept. 4. 17:18
Hasznos számodra ez a válasz?
 13/24 A kérdező kommentje:
Nem tudom nekem Basic után nagyon rideg.
2015. szept. 4. 17:29
 14/24 SimkoL ***** válasza:

Eddig ez a programod kódja - Igaz Mondó Reloaded kedvéért:


unit Unit1;


interface


uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs, SynGdiPlus, ExtCtrls, StdCtrls, ComCtrls, FileCtrl, Buttons;


type

TForm1 = class(TForm)

imgPrev: TImage;

rgSelectMode: TRadioGroup;

gbCompress: TGroupBox;

tbQuality: TTrackBar;

pnlStatus: TPanel;

gbDelay: TGroupBox;

tbDelay: TTrackBar;

gbSource: TGroupBox;

dlbSource: TDirectoryListBox;

dcbSource: TDriveComboBox;

pnlImage: TImage;

lblStatusSource: TLabel;

lblStatusTarget: TLabel;

gbTarget: TGroupBox;

dcbTarget: TDriveComboBox;

gbFiles: TGroupBox;

lbFiles: TListBox;

btnStart: TBitBtn;

lblStatusNow: TLabel;

procedure FormCreate(Sender: TObject);

procedure FormPaint(Sender: TObject);

procedure tbQualityChange(Sender: TObject);

procedure tbDelayChange(Sender: TObject);

procedure dcbSourceChange(Sender: TObject);

procedure btnStartClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;


var

Form1: TForm1;

Gdip: TGDIPlus = nil;

SourceList: TStringList;


implementation


{$R *.dfm}


procedure FindFiles(FilesList: TStringList; StartDir, FileMask: string);

var

SR: TSearchRec;

DirList: TStringList;

IsFound: Boolean;

i: integer;

begin

if StartDir[length(StartDir)] <> '\' then

StartDir := StartDir + '\';

IsFound := FindFirst(StartDir+FileMask, faAnyFile-faDirectory, SR) = 0;

while IsFound do begin

FilesList.Add(StartDir + SR.Name);

IsFound := FindNext(SR) = 0;

Application.ProcessMessages;

Form1.gbFiles.Caption := ' Files: ' + IntToStr(FilesList.Count) + ' ';

end;

FindClose(SR);

DirList := TStringList.Create;

IsFound := FindFirst(StartDir+'*.*', faAnyFile, SR) = 0;

while IsFound do begin

if ((SR.Attr and faDirectory) <> 0) and

(SR.Name[1] <> '.') then

DirList.Add(StartDir + SR.Name);

IsFound := FindNext(SR) = 0;

end;

FindClose(SR);

for i := 0 to DirList.Count - 1 do

begin

FindFiles(FilesList, DirList[i], FileMask);

Application.ProcessMessages;

Form1.gbFiles.Caption := ' Files: ' + IntToStr(FilesList.Count) + ' ';

end;

DirList.Free;

end;


procedure TForm1.FormCreate(Sender: TObject);

begin

Gdip.RegisterPictures;

DoubleBuffered := True;

gbCompress.Caption := ' JPG quality: ' + IntToStr(tbQuality.Position) + ' % ';

gbDelay.Caption := ' Delay: ' + IntToStr(tbDelay.Position) + ' ms ';

end;


procedure TiffToJpg(source, target: string; image: TImage; compress: integer);

var Pic: TSynPicture;

begin

Pic := TSynPicture.Create;

Pic.LoadFromFile(source);

SaveAs(Pic, target, gptJPG, compress);

image.Picture.Graphic := Pic;

Application.ProcessMessages;

Pic.Free;

end;


procedure TForm1.FormPaint(Sender: TObject);

var Row, Ht: Word;

begin

Ht := (ClientHeight + 255) div 256;

for Row := 0 to 255 do

with Canvas do

begin

Brush.Color := RGB(Row, 0, 0);

FillRect(Rect(0, Row * Ht, ClientWidth, (Row + 1) * Ht));

end;

Ht := (pnlImage.Height + 255) div 256;

pnlImage.Canvas.FloodFill(0, 0, clWhite, fsSurface);

for Row := 0 to 70 do

with pnlImage.Canvas do

begin

Brush.Color := RGB(0 , 0, Row * 2);

FillRect(Rect(0, Row * Ht, pnlImage.Width, (Row + 1) * Ht));

end;

pnlImage.Transparent := True;

pnlImage.SendToBack;

end;


procedure TForm1.tbQualityChange(Sender: TObject);

begin

gbCompress.Caption := ' JPG quality: ' + IntToStr(tbQuality.Position) + ' % ';

end;


procedure TForm1.tbDelayChange(Sender: TObject);

begin

gbDelay.Caption := ' Delay: ' + IntToStr(tbDelay.Position) + ' ms ';

end;


procedure TForm1.dcbSourceChange(Sender: TObject);

var dir: string;

begin

lblStatusSource.Caption := dlbSource.Directory;

dir := dlbSource.Directory;

Delete(dir, 1, 1);

lblStatusTarget.Caption := UpCase(dcbTarget.Drive) + dir;

end;


procedure TForm1.btnStartClick(Sender: TObject);

var i: integer;

tifpath, jpgname: string;

begin

lbFiles.Clear;

SourceList := TStringList.Create;

Screen.Cursor := crHourGlass;

FindFiles(SourceList, lblStatusSource.Caption, '*.tif');

Screen.Cursor := crDefault;

for i := 0 to SourceList.Count - 1 do

lbFiles.Items.Append(ExtractFileName(SourceList[i]));

Application.ProcessMessages;

for i := 0 to SourceList.Count - 1 do

begin

Application.ProcessMessages;

tifpath := ExtractFilePath(SourceList.Strings[i]);

tifpath[1] := dcbTarget.Drive;

if not DirectoryExists(tifpath) then ForceDirectories(PChar(tifpath));

if DirectoryExists(tifpath) then

begin

jpgname := ChangeFileExt(SourceList.Strings[i], '.jpg');

jpgname[1] := dcbTarget.Drive;

TiffToJpg(SourceList.Strings[i], jpgname, Form1.imgPrev, tbQuality.Position);

Application.ProcessMessages;

lblStatusNow.Caption := 'From ' + SourceList.Strings[i] + ' to ' + jpgname;

Sleep(tbDelay.Position);

end

else

ShowMessage('New directory add failed error');

end;

imgPrev.Picture := nil;

Application.ProcessMessages;

MessageDlg('End of the conversion !', mtInformation, [mbOk], 0);

end;


end.


Még átnézem és ha van benne szemét kitakarítom. Ez eddig már tudja a könyvtár kiválasztást, konvertálást, másolást, a törlést és a log file mentését még nem írtam bele, de az csak pár sor.


Megérted ?

2015. szept. 4. 18:22
Hasznos számodra ez a válasz?
 15/24 SimkoL ***** válasza:

Basszus, a SourceList.Free; lemaradt

...

MessageDlg('End of the conversion !', mtInformation, [mbOk], 0);

SourceList.Free;

end;

2015. szept. 4. 18:41
Hasznos számodra ez a válasz?
 16/24 A kérdező kommentje:
:)
2015. szept. 4. 18:46
 17/24 SimkoL ***** válasza:
Nálunk Mádon ma veszi (vette) kezdetét a Furmint Ünnep. LGT Koncert lesz ma este, holnap felvonulás, borkostolás... és Omega 'Beat mise' este így vasárnapig nem vagyok 'beszámítható.
2015. szept. 4. 19:06
Hasznos számodra ez a válasz?
 18/24 A kérdező kommentje:
Csak nyugottan első a család és a szórakozás
2015. szept. 4. 19:35
 19/24 SimkoL ***** válasza:
Eddig pofára így néz ki: [link]
2015. szept. 5. 07:56
Hasznos számodra ez a válasz?
 20/24 A kérdező kommentje:
Nagyon jól néz ki egy statusbart tudsz még bele csempészni? Hogy mutassa %-ban a folyamatot. :)
2015. szept. 5. 16:30
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!