/ 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
Ingen On Exception
Fra : Kurt Guldbæk


Dato : 27-02-04 21:27

Hej NG!

Så prøver jeg igen at få hjælp her.

Jeg har lavet dette:
Try
CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True);
Except
On Exception do
Begin
MessageDlg('Filen eksisterede allerede',mtError, [mbOK],0);
End;
End;

Sådan som jeg har forstået CopyFile skal den give fejl, hvis "TilFilNavn"
allerede eksisterer.

Imidlertid sker der intet når CopyFile er sat med True tilsidst. Sættes der
i stedet False bliver "TilFilNavn" som forventet overskrevet.

Hvad har jeg glemt/gjort galt?

--
Med venlig hilsen
Kurt Guldbæk
www.guldbaek.net



 
 
Tom-Vidar Nilsen (27-02-2004)
Kommentar
Fra : Tom-Vidar Nilsen


Dato : 27-02-04 21:27

> Jeg har lavet dette:
> Try
> CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True);
> Except
> On Exception do
> Begin
> MessageDlg('Filen eksisterede allerede',mtError, [mbOK],0);
> End;
> End;
>
> Sådan som jeg har forstået CopyFile skal den give fejl, hvis "TilFilNavn"
> allerede eksisterer.
>
> Imidlertid sker der intet når CopyFile er sat med True tilsidst. Sættes
der
> i stedet False bliver "TilFilNavn" som forventet overskrevet.
>
> Hvad har jeg glemt/gjort galt?

Det er ikke alt som gir exceptions (heldigvis). Fra hjelpefila :

Return Values

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error
information, call GetLastError.

Alltså :

If CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True)=0 Then
MessageDlg('Filen eksisterede allerede',mtError, [mbOK],0);



Kurt Guldbæk (27-02-2004)
Kommentar
Fra : Kurt Guldbæk


Dato : 27-02-04 21:50

Banal fejl (jeg er rød i hovedet)!
Tak til Tom-Vidar.

--
Med venlig hilsen
Kurt Guldbæk

"Tom-Vidar Nilsen" <noone@kgb.ru> skrev i en meddelelse
news:LQN%b.6916$rj4.95421@news2.e.nsc.no...
> > Jeg har lavet dette:
> > Try
> > CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True);
> > Except
> > On Exception do
> > Begin
> > MessageDlg('Filen eksisterede allerede',mtError, [mbOK],0);
> > End;
> > End;
> >
> > Sådan som jeg har forstået CopyFile skal den give fejl, hvis
"TilFilNavn"
> > allerede eksisterer.
> >
> > Imidlertid sker der intet når CopyFile er sat med True tilsidst. Sættes
> der
> > i stedet False bliver "TilFilNavn" som forventet overskrevet.
> >
> > Hvad har jeg glemt/gjort galt?
>
> Det er ikke alt som gir exceptions (heldigvis). Fra hjelpefila :
>
> Return Values
>
> If the function succeeds, the return value is nonzero.
> If the function fails, the return value is zero. To get extended error
> information, call GetLastError.
>
> Alltså :
>
> If CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True)=0 Then
> MessageDlg('Filen eksisterede allerede',mtError, [mbOK],0);
>
>



Kurt Guldbæk (28-02-2004)
Kommentar
Fra : Kurt Guldbæk


Dato : 28-02-04 11:06

"Tom-Vidar Nilsen" <noone@kgb.ru> skrev i en meddelelse
news:LQN%b.6916$rj4.95421@news2.e.nsc.no...
> > Jeg har lavet dette:
> > Try
> > CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True);
> > Except
> > On Exception do
> > Begin
> > MessageDlg('Filen eksisterede allerede',mtError, [mbOK],0);
> > End;
> > End;
> >
> > Sådan som jeg har forstået CopyFile skal den give fejl, hvis
"TilFilNavn"
> > allerede eksisterer.
> >
> > Imidlertid sker der intet når CopyFile er sat med True tilsidst. Sættes
> der
> > i stedet False bliver "TilFilNavn" som forventet overskrevet.
> >
> > Hvad har jeg glemt/gjort galt?
>
> Det er ikke alt som gir exceptions (heldigvis). Fra hjelpefila :
>
> Return Values
>
> If the function succeeds, the return value is nonzero.
> If the function fails, the return value is zero. To get extended error
> information, call GetLastError.
>
> Alltså :
>
> If CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True)=0 Then
> MessageDlg('Filen eksisterede allerede',mtError, [mbOK],0);
>


Jeg har nu lavet det som Tom-Vidar foreslog.
Der kommer dog stadig ingen fejlmelding selv om filen findes i forvejen.

--
Med venlig hilsen
Kurt Guldbæk
www.guldbaek.net



Tom-Vidar Nilsen (28-02-2004)
Kommentar
Fra : Tom-Vidar Nilsen


Dato : 28-02-04 11:22

> > > Sådan som jeg har forstået CopyFile skal den give fejl, hvis
> "TilFilNavn"
> > > allerede eksisterer.
> > >
> > > Imidlertid sker der intet når CopyFile er sat med True tilsidst.
Sættes
> > der
> > > i stedet False bliver "TilFilNavn" som forventet overskrevet.
> > >
> > > Hvad har jeg glemt/gjort galt?
> >
> > Det er ikke alt som gir exceptions (heldigvis). Fra hjelpefila :
> >
> > Return Values
> >
> > If the function succeeds, the return value is nonzero.
> > If the function fails, the return value is zero. To get extended error
> > information, call GetLastError.
> >
> > Alltså :
> >
> > If CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True)=0 Then
> > MessageDlg('Filen eksisterede allerede',mtError, [mbOK],0);
> >
>
>
> Jeg har nu lavet det som Tom-Vidar foreslog.
> Der kommer dog stadig ingen fejlmelding selv om filen findes i forvejen.

Den skal det. Mener jeg har gjort det mange ganger på jobben.
Du jo alltids sjekke med If FileExists(... men definisjonen på CopyFile er
grei den :


The CopyFile function copies an existing file to a new file.


CopyFile(
lpExistingFileName : PChar, // name of an existing file
lpNewFileName : PChar, // name of new file
bFailIfExists : Boolean); // operation if file exists

bFailIfExists:
Specifies how this operation is to proceed if a file of the same name as
that specified by lpNewFileName already exists.
If this parameter is TRUE and the new file already exists, the function
fails.
If this parameter is FALSE and the new file already exists,
the function overwrites the existing file and succeeds.
}

var
fileSource, fileDest: string;
begin
fileSource := 'C:\SourceFile.txt';
fileDest := 'G:\DestFile.txt';
CopyFile(PChar(fileSource), PChar(fileDest), False);
end;



Tom-Vidar Nilsen (28-02-2004)
Kommentar
Fra : Tom-Vidar Nilsen


Dato : 28-02-04 12:17

> > > If CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True)=0 Then
> > > MessageDlg('Filen eksisterede allerede',mtError, [mbOK],0);
> > >
> >
> >
> > Jeg har nu lavet det som Tom-Vidar foreslog.
> > Der kommer dog stadig ingen fejlmelding selv om filen findes i forvejen.

Jeg testet det ut her.

MessageDlg('Result : ' +
IntToStr(Integer(CopyFile('c:\Float.ico','c:\new.ico',True))),
mtInformation, [mbOK], 0);

Den returnerer 1 når filen ikke finnes og 0 når den finnes.

Sjekk koden din, test med faste filnavn som i mitt eksempel.



Kurt Guldbæk (28-02-2004)
Kommentar
Fra : Kurt Guldbæk


Dato : 28-02-04 17:08

Hej Tom!
Jeg har Prøvet at lave det som du viser.
Når jeg kompilerer det komer der en fejlmelding efter
"If CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True)=0 Then"
hvor der står 'Incompatible types'.
Det eneste kompileren vil akseptere er
"If CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True)= Null Then"

Når det køres kommer der stadig ingen melding om at filen findes i forvejen.

--
Med venlig hilsen
Kurt Guldbæk

"Tom-Vidar Nilsen" <noone@kgb.ru> skrev i en meddelelse
news:yM_%b.7109$rj4.96496@news2.e.nsc.no...
> > > > If CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True)=0 Then
> > > > MessageDlg('Filen eksisterede allerede',mtError, [mbOK],0);
> > > >
> > >
> > >
> > > Jeg har nu lavet det som Tom-Vidar foreslog.
> > > Der kommer dog stadig ingen fejlmelding selv om filen findes i
forvejen.
>
> Jeg testet det ut her.
>
> MessageDlg('Result : ' +
> IntToStr(Integer(CopyFile('c:\Float.ico','c:\new.ico',True))),
> mtInformation, [mbOK], 0);
>
> Den returnerer 1 når filen ikke finnes og 0 når den finnes.
>
> Sjekk koden din, test med faste filnavn som i mitt eksempel.
>
>



Tom-Vidar Nilsen (28-02-2004)
Kommentar
Fra : Tom-Vidar Nilsen


Dato : 28-02-04 18:18

> Hej Tom!
> Jeg har Prøvet at lave det som du viser.
> Når jeg kompilerer det komer der en fejlmelding efter
> "If CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True)=0 Then"
> hvor der står 'Incompatible types'.
> Det eneste kompileren vil akseptere er
> "If CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True)= Null Then"
>
> Når det køres kommer der stadig ingen melding om at filen findes i
forvejen.

Min Feil, resultatet fra API kallet blir boolean og true om det gikk bra
(filen finnes ikke fra før)
Når det gjelder API så står det ofte at resultatet er 0 osv, selv om det
ikke kommer som integer, da kan det være lett å gjøre feil.

If Not CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True) Then ..... meld
feil...

Blir da riktig.

> Med venlig hilsen
> Kurt Guldbæk
>
> > Jeg testet det ut her.
> >
> > MessageDlg('Result : ' +
> > IntToStr(Integer(CopyFile('c:\Float.ico','c:\new.ico',True))),
> > mtInformation, [mbOK], 0);
> >
> > Den returnerer 1 når filen ikke finnes og 0 når den finnes.
> >
> > Sjekk koden din, test med faste filnavn som i mitt eksempel.

Om du ikke får det til nå heller, så prøv linjen jeg krev over med ett
filnavn du har i systemet.
Lag det enkelt, bruk faste filnavn for testen , 0 som svar tilsvarer false.



Kurt Guldbæk (29-02-2004)
Kommentar
Fra : Kurt Guldbæk


Dato : 29-02-04 10:44

Ja, så virker det!
Så mangler jeg kun, at jeg også kan bruge indholdet af de kopierede filer!

--
Med venlig hilsen
Kurt Guldbæk
www.guldbaek.net


"Tom-Vidar Nilsen" <noone@kgb.ru> skrev i en meddelelse
news:Y340c.7177$_c4.91262@news4.e.nsc.no...
> > Hej Tom!
> > Jeg har Prøvet at lave det som du viser.
> > Når jeg kompilerer det komer der en fejlmelding efter
> > "If CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True)=0 Then"
> > hvor der står 'Incompatible types'.
> > Det eneste kompileren vil akseptere er
> > "If CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True)= Null Then"
> >
> > Når det køres kommer der stadig ingen melding om at filen findes i
> forvejen.
>
> Min Feil, resultatet fra API kallet blir boolean og true om det gikk bra
> (filen finnes ikke fra før)
> Når det gjelder API så står det ofte at resultatet er 0 osv, selv om det
> ikke kommer som integer, da kan det være lett å gjøre feil.
>
> If Not CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True) Then .....
meld
> feil...
>
> Blir da riktig.
>
> > Med venlig hilsen
> > Kurt Guldbæk
> >
> > > Jeg testet det ut her.
> > >
> > > MessageDlg('Result : ' +
> > > IntToStr(Integer(CopyFile('c:\Float.ico','c:\new.ico',True))),
> > > mtInformation, [mbOK], 0);
> > >
> > > Den returnerer 1 når filen ikke finnes og 0 når den finnes.
> > >
> > > Sjekk koden din, test med faste filnavn som i mitt eksempel.
>
> Om du ikke får det til nå heller, så prøv linjen jeg krev over med ett
> filnavn du har i systemet.
> Lag det enkelt, bruk faste filnavn for testen , 0 som svar tilsvarer
false.
>
>



Tom-Vidar Nilsen (29-02-2004)
Kommentar
Fra : Tom-Vidar Nilsen


Dato : 29-02-04 11:25

> > > "If Not CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True) Then"
> Ja, så virker det!
> Så mangler jeg kun, at jeg også kan bruge indholdet af de kopierede filer!

Det skyldes ikke CopyFile. Har du prøvd å manuelt kopiere filen.., har du
databasen åpen når du gjør det?
Virker databasen som den skal uten andre filer....

Dette må andre svare på. Databaser er ikke mitt felt.



Kurt Guldbæk (29-02-2004)
Kommentar
Fra : Kurt Guldbæk


Dato : 29-02-04 21:23

Hej Tom!

Jeg har valgt at fortsætte problemet med den tomme database i en anden tråd,
Kopieret database er tom!
Tak for din hjælp.

--
Med venlig hilsen
Kurt Guldbæk
www.guldbaek.net


"Tom-Vidar Nilsen" <noone@kgb.ru> skrev i en meddelelse
news:a7j0c.7292$_c4.92076@news4.e.nsc.no...
> > > > "If Not CopyFile(PChar(FraFilNavn),PChar(TilFilNavn),True) Then"
> > Ja, så virker det!
> > Så mangler jeg kun, at jeg også kan bruge indholdet af de kopierede
filer!
>
> Det skyldes ikke CopyFile. Har du prøvd å manuelt kopiere filen.., har du
> databasen åpen når du gjør det?
> Virker databasen som den skal uten andre filer....
>
> Dette må andre svare på. Databaser er ikke mitt felt.
>
>



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

Månedens bedste
Årets bedste
Sidste års bedste