![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пытаюсь сделать счетчик CGI на Делфи
MDFE © (2003-08-09 15:18:00)
Пытаюсь сделать счетчик на Делфи/CGI.
Задача:
var s:string;
1) Нужно в CGI открыть файл(где цифра посещений) на чтение, считать s, закрыть.
2) s:=IntToStr(StrToInt(s)+1);
3) Открыть файл на запись, записать s, закрыть файл
-------------------------------------------------------------
Делаю 1 пункт, 1 вариант:
procedure TWebModule1.WebModule1WebActionItemAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
f:textfile;
s:string;
begin
s:="0";
AssignFile(f," http://host/logs/Count.dat");
Reset(f); // Ошибка
Readln(f,s);
Close(f);
end;
Ошибка IO 123
try и -I непомогают
-------------------------------------------------------------
Делаю 1 пункт, 2 вариант(из help`a):
procedure TWebModule1.WebModule1WebActionItemAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
s:string;
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer: PChar;
i: Integer;
begin
s:="0";
iFileHandle := FileOpen(" http://host/logs/Count.dat", fmOpenRead);
iFileLength := FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead := FileRead(iFileHandle, Buffer, iFileLength);
FileClose(iFileHandle);
s:=PChar(Buffer);
FreeMem(Buffer);
end;
Ошибок нет, но iBytesRead = -1
Вопрос как считать эту "s"?
Или может кто делал такое, подскажите куда копать.
Проверка CGI идет на ISS
http://host/logs/Count.dat- существует
права - все галочки(Доступ к тексту сценария, чтение, запись, запись в журнал)
Если будут вопросы, задавайте.
MDFE (2003-08-10 02:22:00) [1]
Набережных С. © (09.08.03 18:32)
Вы полностью правы, еще пришлось побороться(через ошибки) с правами доступа(нехотел открываться на запись).
но все ок. :)
Anatoly Podgoretsky (2003-08-09 18:46:00) [2]
MDFE © (09.08.03 18:04)
Это уже другое дело, это нормальный путь
А то http:
Набережных С. (2003-08-09 18:32:00) [3]
Будь выполнен п.1, и вопроса бы, возможно, не возникло. ИМХО, конечно.
MDFE (2003-08-09 18:04:00) [4]
Anatoly Podgoretsky © (09.08.03 16:11)
понял...т.е. путь берем локально для сервера
AssignFile(f,"./../wwwroot/logs/DownloadCount.dat");
Reset(f);
работает, остальное мелочи.
На этом спасибо.
Набережных С. © (09.08.03 17:02)
1) проверки в этом посте убрал, конечно же ошибки были(имелось введу CGI не загибался, прошу прощения за неточность)
2) взято из help`a D6 "FileOpen, FileSeek, FileRead Example", тупо поверил в написаное.
FileRead пользаваться не приходилось, хватало Read(f
3) описка, имелось в виду s:=String(Buffer);
Благодарю и Вас.
Anatoly Podgoretsky (2003-08-09 17:10:00) [5]
Ну мелочи я воосе не стал рассматривать, нет смысла если главное не в порядке.
Набережных С. (2003-08-09 17:02:00) [6]
Плюс к >>Anatoly Podgoretsky © (09.08.03 16:11)<< еще кое-какие мелочи:
1) Откуда известно, что ошибок нет, если нет проверок?
2) Да сколько же можно!
iBytesRead := FileRead(iFileHandle, Buffer^, iFileLength);
3) Ради любопытства - на кой ляд вот это:
s:= PChar(Buffer);
Anatoly Podgoretsky (2003-08-09 16:11:00) [7]
http://host/logs/Count.dat
Такой файл не может существовать, недопустимые символы в имени файла