Avatar billede jisch Mester
10. august 2003 - 03:46 Der er 3 kommentarer og
1 løsning

Try..Except

Jeg har følgende programstump:

  Try
    DirLB.Drive:=DrCB.Drive;
  Except
    On EInOutError Do Begin
      DrCB.Drive:='C';
      DirLB.Drive:='C';
    End;
  End;

DrCB er en DriveCombobox. DirLB er en DirectoryListbox. Hvis jeg vælger drive A: går programmet ud i fejl???
Hvad gør jeg forkert?
Avatar billede stone Forsker
10. august 2003 - 10:10 #1
er det når der er en diskette eller ikke i drevet?
Avatar billede Slettet bruger
10. august 2003 - 10:18 #2
function DiskInDrive(Drive: Char): Boolean;
  // Disk can be a floppy, CD-ROM,...
var
  ErrorMode: Word;
begin
  { make it upper case }
  if Drive in ['a'..'z'] then Dec(Drive, $20);
  { make sure it's a letter }
  if not (Drive in ['A'..'Z']) then
    raise EConvertError.Create('Not a valid drive ID');
  { turn off critical errors }
  ErrorMode := SetErrorMode(SEM_FailCriticalErrors);
  try
    { drive 1 = a, 2 = b, 3 = c, etc. }
    if DiskSize(Ord(Drive) - $40) = -1 then
      Result := False
    else
      Result := True;
  finally
    { Restore old error mode }
    SetErrorMode(ErrorMode);
  end;
end;

procedure TForm1.DriveComboBox1Change(Sender: TObject);
begin
if DiskInDrive(DriveComboBox1.Drive) then
DirectoryListBox1.Drive := DriveComboBox1.Drive
else
begin
DirectoryListBox1.Drive := 'C';
DriveComboBox1.Drive := 'C';
end;
end;
Avatar billede jisch Mester
10. august 2003 - 11:52 #3
Det er uden disk eller defekt disk, men jeg har i mellemtiden fundet ud af at min programstump virker når programmet køres uden for IDE. hejhej's function er nydelig. Han får de 30 for umagen.
Avatar billede elv Nybegynder
10. august 2003 - 23:00 #4
Når du kører dine programmer fra Delphi stopper den som default op ved alle exceptions, så du har mulighed for at undersøge det nærmere - også selvom du har fanget den. Derfor får du ikke fejlen hvis du kører programmet fra din exe-fil. Hvis du bliver for træt af det kan du slå enkelte exceptions fra i menuen:
Tools -> Debug Options -> Language Exceptions
Synes bare lige du skulle vide det... :)
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