Avatar billede Slettet bruger
18. april 2008 - 15:47 Der er 8 kommentarer og
1 løsning

Fejlmelding ved tryk på 'nej' i opret mappe

Jeg bruger den her kode til at finde alle filer med navnet vinlist til en backup, ligeledes kopieres mappen images til backup.

var
FOS :TSHFileOpStruct;
begin
with FOS do                //kopier databasen til biblioteket backup
begin
Wnd  := 0;
wFunc := FO_COPY;
pFrom := pchar(ExtractFilePath(Application.ExeName) + '\vinlist*'#0);
pTo  := pchar(ExtractFilePath(Application.ExeName) + '\backup');
fFlags:= FOF_NOCONFIRMATION;
end;
SHFileOperation(FOS);
begin
with FOS do
begin
Wnd  := 0;
wFunc := FO_COPY;
pFrom := pchar(ExtractFilePath(Application.ExeName) + '\history*'#0);
pTo  := pchar(ExtractFilePath(Application.ExeName) + '\backup');
fFlags:= FOF_NOCONFIRMATION;
end;
SHFileOperation(FOS);
CopyDir('c:\programmer\program\images','c:\programmer\program\backup\images');

showmessagepos('dataerne er kopieret til backup',400,400);

Problemet er hvis man siger nej til at mappen backup oprettes så får man fejlmelding og til sidst beskeden at dataerne er kopieret til backup.

spørgsmål:

Er der ikke en bedre måde at gøre det på for at undgå den fejlmelding? at sige nej til backup burde ikke udløse en fejlmelding.
Avatar billede kroning Nybegynder
18. april 2008 - 16:56 #1
SHFileOperation returnere 0 hvis alt er i orden, <>0 hvis ikke.
Avatar billede Slettet bruger
18. april 2008 - 17:49 #2
Jeg er ikke helt med hvad du mener...
Avatar billede kroning Nybegynder
18. april 2008 - 17:57 #3
Du kan teste om kopieringen var i orden f.eks. således:

if SHFileOperation(FOS)<>0 then
  showmessage('Nej, kopiering er ikke i orden');
Avatar billede Slettet bruger
19. april 2008 - 23:44 #4
Når den spørger til at oprette mappen "backup" og man siger nej får jeg stadig fejlmeldinger, hvor den så igen viser ja og nej til at oprette mappen "backup"

Det gør den 3 gange

Til sidst kommer så fejlmeldingen at stien ikke findes...

Det er som om den stadig forsøger at kopierer til en sti som ikke findes.
Avatar billede kroning Nybegynder
20. april 2008 - 09:23 #5
Hvordan ser din kode ud?
Avatar billede Slettet bruger
20. april 2008 - 12:07 #6
var
FOS :TSHFileOpStruct;
begin
with FOS do                //kopier databasen til biblioteket backup
begin
Wnd  := 0;
wFunc := FO_COPY;
pFrom := pchar(ExtractFilePath(Application.ExeName) + '\vinlist*'#0);
pTo  := pchar(ExtractFilePath(Application.ExeName) + '\backup');
fFlags:= FOF_NOCONFIRMATION;
end;
SHFileOperation(FOS);
begin
with FOS do
begin
Wnd  := 0;
wFunc := FO_COPY;
pFrom := pchar(ExtractFilePath(Application.ExeName) + '\history*'#0);
pTo  := pchar(ExtractFilePath(Application.ExeName) + '\backup');
fFlags:= FOF_NOCONFIRMATION;
if SHFileOperation(FOS)<>0 then
  showmessage('Kopieringen blev ikke gennemført');
end;

SHFileOperation(FOS);
CopyDir('c:\programmer\programmer\images','c:\programmer\program\backup\images');

showmessagepos('dataerne er kopieret til backup',400,400);
Avatar billede kroning Nybegynder
20. april 2008 - 13:26 #7
Først vil jeg anbefale at du får fat i nogle bøger om Pascal så du kan lære de grundliggende ting som f.eks. hvordan man laver og hvordan en if-then sætning virker.

Her er koden, utestet men det burde virke.

var
  FOS :TSHFileOpStruct;
  AppPath : string;

function DoCopy(FromPath, ToPath : string) : boolean;
begin
  with FOS do                //kopier databasen til biblioteket backup
  begin
    Wnd  := 0;
    wFunc := FO_COPY;
    pFrom := pchar(FromPath+#0);
    pTo  := pchar(ToPath);
    fFlags:= FOF_NOCONFIRMATION;
  end;
  Result:=SHFileOperation(FOS)=0;
end;

begin
  AppPath:=ExtractFilePath(Application.ExeName);
  if DoCopy(AppPath + '\vinlist*',AppPath + '\backup') then
    if DoCopy(AppPAth + '\history*', AppPath + '\backup') then
    begin
      CopyDir('c:\programmer\program\images','c:\programmer\program\backup\images');
      showmessagepos('dataerne er kopieret til backup',400,400);
    end;
end;
Avatar billede Slettet bruger
20. april 2008 - 14:04 #8
Tak for din tålmodighed og jeg skal nok lige læse lidt om if osv...

Dit eksempel virker perfekt...

smid et svar
Avatar billede kroning Nybegynder
20. april 2008 - 17:11 #9
Og et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester