Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Консольное приложение [D5, WinXP]


dms_main ©   (2004-10-18 00:15:00) 

Уважаемые мастера! Подскажите как самому обработать исключения и ошибки в консольном приложении?


dms_main   (2004-10-18 14:01:00) [1]

и все таки - в application есть onexception, а есть ли нечто подобное в Console application ?


dms_main   (2004-10-18 13:59:00) [2]

Спасибо - вроде работает , видимо ошибка была где-то в логике  :-)


begin...end   (2004-10-18 11:32:00) [3]

Т.е. я думаю, что вот так лучше сделать, и попроще будет:

var
Drives: array of Char;

procedure GetDrives;
var
 Ch: Char;
begin
 for Ch := 'A' to 'Z' do
   if GetDriveType(PChar(Ch + ':\')) in [3, 4] then
   begin
     SetLength(Drives, Length(Drives) + 1);
     Drives[High(Drives)] := Ch;
   end;
end.


begin...end   (2004-10-18 11:06:00) [4]

Я правда не понял, почему drives : array of String, когда каждый элемент содержит только одну букву; и зачем pchar(letter[i]).


Rouse_   (2004-10-18 10:46:00) [5]

Проверил этот код, все нормально...

program Project1;

{$APPTYPE CONSOLE}

uses
 Windows;

const
letter : array [0..25] of string =
 ('q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m');

var
 drives : array of String;
 i:integer;

procedure getdrives;
var
 I, D, F: Integer;
begin
 d:=0;
 for i:=0 to 25 do
 begin
   f := GetDriveType(pchar(letter[i]+':\'));
   if (f=3) or (f=4) then
   begin
     d:=length(drives)+1;
     setlength(drives,d);
     drives[d-1] := pchar(letter[i]);
   end;
 end;
end;

begin
 getdrives;
 for I := 0 to Length(drives) do Write(drives[I]);
 Sleep(4000);
end.


dms_main   (2004-10-18 02:41:00) [6]

ошибка в том что в Letter[i] подставляется null:-(
Самое интересное что это происходит где-то в 30% использования этой процедуры.
P.S. изначально length(drives) = 0;


dms_main   (2004-10-18 02:38:00) [7]


.....
const
letter : array [0..25] of string = ('q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m');
.....
var
drives : array of string;
i,f,d:integer;

.....
procedure getdrives;
begin
d:=0;
    for i:=0 to 25 do
       begin
       f:=GetDriveType(pchar(letter[i]+':\'));
       if (f=3) or (f=4) then
               begin
                   d:=length(drives)+1;
                   setlength(drives,d);
                   drives[d-1]:=pchar(letter[i]);
               end;
       end;
end;


GanibalLector   (2004-10-18 02:31:00) [8]

Что за ошибка и где,собственно,код ???


dms_main   (2004-10-18 02:27:00) [9]

в ХР всеравно выдает ошибку!:-(


jack128   (2004-10-18 00:29:00) [10]

dms_main ©   (18.10.04 0:15)
Подскажите как самому обработать исключения и ошибки в консольном приложении?

так же как и в любом другом приложении на Delphi. в блоке try except end


Closer   (2004-10-18 00:26:00) [11]

Т.е. не используя блоки try-except и try-finally?


Наверх

Титульная страница Поиск, карта сайта Написать письмо