/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Kopiering af billedfil
Fra : Kurt Guldbæk


Dato : 14-08-03 06:10

For at kopiere en billedfil har jeg oprettet et TImage og kopierer
billedfilen således:
TempImage1.Picture.LoadFromFile(OpenPictureDialog.FileName);
TempImage1.Picture.SaveToFile(EjendomBilledFilNavn);
Denne metode skal jo først gemme filen i TImage, hvilket må tage unødig lang
tid.
Det virker også ganske udemærket, men der må da være en hurtigere metode.

Jeg har prøvet at kikke på Assign, men ikke fundet en brugbar metode!

Mvh Kurt



 
 
Klaus Petersen (14-08-2003)
Kommentar
Fra : Klaus Petersen


Dato : 14-08-03 09:30

> For at kopiere en billedfil har jeg oprettet et TImage og kopierer
> billedfilen således:
> TempImage1.Picture.LoadFromFile(OpenPictureDialog.FileName);
> TempImage1.Picture.SaveToFile(EjendomBilledFilNavn);
> Denne metode skal jo først gemme filen i TImage, hvilket må tage unødig
lang
> tid. Det virker også ganske udemærket, men der må da være en hurtigere
metode.

Ja men du behøver ikke at kopiere gennem en TImage komponent. Du kunne
f.eks. prøve denne funktion:

function FileCopy ( srcfile : string; destfile : string ) : boolean;
var
buf : array [0..65535] of byte;
srcfh, dstfh : file of byte;
br : longint;
ioerr : integer;
begin;
assignfile ( srcfh, srcfile );
assignfile ( dstfh, destfile );

{$i-}
reset (srcfh);

ioerr := ioresult;
if not (ioerr = 0) then begin; result := false; exit; end; // fejl ved
åbning af kilde

rewrite (dstfh);

ioerr := ioresult;
if not (ioerr = 0) then begin; result := false; exit; end; // fejl ved
åbning af dest

repeat;
blockread ( srcfh, buf, sizeof (buf), br );

ioerr := ioresult;
if not (ioerr = 0) then begin;
closefile (srcfh);
closefile (dstfh);
result := false;
exit;
end; // læsefejl

blockwrite ( dstfh, buf, br );

ioerr := ioresult;
if not (ioerr = 0) then begin;
closefile (srcfh);
closefile (dstfh);
result := false;
exit;
end; // skrivefejl

until ( br = 0 );

closefile (srcfh);
closefile (dstfh);

{$i+}
result := true; // alt ok
end;




Kurt Guldbæk (14-08-2003)
Kommentar
Fra : Kurt Guldbæk


Dato : 14-08-03 12:30

Tak, Klaus, den vil jeg prøve. Den ser nu noget mere indviklet ud

Mvh Kurt

"Klaus Petersen" <ng@spectual.ra.bnaa.dk> wrote in message
news:bhfhav$9mt$1@sunsite.dk...
> > For at kopiere en billedfil har jeg oprettet et TImage og kopierer
> > billedfilen således:
> > TempImage1.Picture.LoadFromFile(OpenPictureDialog.FileName);
> > TempImage1.Picture.SaveToFile(EjendomBilledFilNavn);
> > Denne metode skal jo først gemme filen i TImage, hvilket må tage unødig
> lang
> > tid. Det virker også ganske udemærket, men der må da være en hurtigere
> metode.
>
> Ja men du behøver ikke at kopiere gennem en TImage komponent. Du kunne
> f.eks. prøve denne funktion:
>
> function FileCopy ( srcfile : string; destfile : string ) : boolean;
> var
> buf : array [0..65535] of byte;
> srcfh, dstfh : file of byte;
> br : longint;
> ioerr : integer;
> begin;
> assignfile ( srcfh, srcfile );
> assignfile ( dstfh, destfile );
>
> {$i-}
> reset (srcfh);
>
> ioerr := ioresult;
> if not (ioerr = 0) then begin; result := false; exit; end; // fejl ved
> åbning af kilde
>
> rewrite (dstfh);
>
> ioerr := ioresult;
> if not (ioerr = 0) then begin; result := false; exit; end; // fejl ved
> åbning af dest
>
> repeat;
> blockread ( srcfh, buf, sizeof (buf), br );
>
> ioerr := ioresult;
> if not (ioerr = 0) then begin;
> closefile (srcfh);
> closefile (dstfh);
> result := false;
> exit;
> end; // læsefejl
>
> blockwrite ( dstfh, buf, br );
>
> ioerr := ioresult;
> if not (ioerr = 0) then begin;
> closefile (srcfh);
> closefile (dstfh);
> result := false;
> exit;
> end; // skrivefejl
>
> until ( br = 0 );
>
> closefile (srcfh);
> closefile (dstfh);
>
> {$i+}
> result := true; // alt ok
> end;
>
>
>



Harald (14-08-2003)
Kommentar
Fra : Harald


Dato : 14-08-03 19:00

"Klaus Petersen" <ng@spectual.ra.bnaa.dk> skrev i en meddelelse
news:bhfhav$9mt$1@sunsite.dk...
> > For at kopiere en billedfil har jeg oprettet et TImage og kopierer
> > billedfilen således:
> > TempImage1.Picture.LoadFromFile(OpenPictureDialog.FileName);
> > TempImage1.Picture.SaveToFile(EjendomBilledFilNavn);
> > Denne metode skal jo først gemme filen i TImage, hvilket må tage unødig
> lang
> > tid. Det virker også ganske udemærket, men der må da være en hurtigere
> metode.
>
> Ja men du behøver ikke at kopiere gennem en TImage komponent. Du kunne
> f.eks. prøve denne funktion:

Hvorfor ikke bare bruge copyfile funktionen. Se win32 DR for mere info.

Eks:
copyfile('frafilnavn','tilfilnavn',false);

<klip>

Mvh
HK



Kurt Guldbæk (15-08-2003)
Kommentar
Fra : Kurt Guldbæk


Dato : 15-08-03 06:12

Hvor finder jeg den omtalte 'win32 DR' information?
Mvh Kurt


"Harald" <news@kroning.dk> wrote in message
news:3f3bce29$0$32479$edfadb0f@dread16.news.tele.dk...
> "Klaus Petersen" <ng@spectual.ra.bnaa.dk> skrev i en meddelelse
> news:bhfhav$9mt$1@sunsite.dk...
> > > For at kopiere en billedfil har jeg oprettet et TImage og kopierer
> > > billedfilen således:
> > > TempImage1.Picture.LoadFromFile(OpenPictureDialog.FileName);
> > > TempImage1.Picture.SaveToFile(EjendomBilledFilNavn);
> > > Denne metode skal jo først gemme filen i TImage, hvilket må tage
unødig
> > lang
> > > tid. Det virker også ganske udemærket, men der må da være en hurtigere
> > metode.
> >
> > Ja men du behøver ikke at kopiere gennem en TImage komponent. Du kunne
> > f.eks. prøve denne funktion:
>
> Hvorfor ikke bare bruge copyfile funktionen. Se win32 DR for mere info.
>
> Eks:
> copyfile('frafilnavn','tilfilnavn',false);
>
> <klip>
>
> Mvh
> HK
>
>



Thomas Munk (15-08-2003)
Kommentar
Fra : Thomas Munk


Dato : 15-08-03 12:05

"Kurt Guldbæk" <kurt@guldbaek.net> wrote in message
news:3f3c6bda$0$21610$edfadb0f@dread11.news.tele.dk...
> Hvor finder jeg den omtalte 'win32 DR' information?
> Mvh Kurt
>
>
> "Harald" <news@kroning.dk> wrote in message
> news:3f3bce29$0$32479$edfadb0f@dread16.news.tele.dk...
> > "Klaus Petersen" <ng@spectual.ra.bnaa.dk> skrev i en meddelelse
> > news:bhfhav$9mt$1@sunsite.dk...
> > > > For at kopiere en billedfil har jeg oprettet et TImage og kopierer
> > > > billedfilen således:
> > > > TempImage1.Picture.LoadFromFile(OpenPictureDialog.FileName);
> > > > TempImage1.Picture.SaveToFile(EjendomBilledFilNavn);
> > > > Denne metode skal jo først gemme filen i TImage, hvilket må tage
> unødig
> > > lang
> > > > tid. Det virker også ganske udemærket, men der må da være en
hurtigere
> > > metode.
> > >
> > > Ja men du behøver ikke at kopiere gennem en TImage komponent. Du kunne
> > > f.eks. prøve denne funktion:
> >
> > Hvorfor ikke bare bruge copyfile funktionen. Se win32 DR for mere info.
> >
> > Eks:
> > copyfile('frafilnavn','tilfilnavn',false);


CopyFile er defineret i Windows.pas, så "uses Windows" (som er standard i en
applikation) skulle være nok. Skriv blot CopyFile i din source og tryk F1
for nærmere forklaring.



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste