![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Консольное приложение [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?