Вниз
Скачать: CL | DM;

Как всегда проблемы......   Найти похожие ветки 

← →
Chlavik ©   (2002-09-29 03:41) [0]

Иногда я Delphi совсем не понимаю
Смотрите
If WrtHis1 Then
Begin
AssignFile(PwlBase,Workdir+"PwlBase.Pwb");
If FileExists(Workdir+"PwlBase.Pwb") then
begin
Append(PwlBase);
end
else
begin
ReWrite(PwlBase);
Writeln(PwlBase,"xxxxx");
k:=IOresult;
if k<>0 then Showmessage(IntToStr(k));
У меня этого файла нету...
Так вот выдаёт 103 - File not Open
Так самое главное что файл создаёт а туда ничего не пишет!
Я не понял что за прикол или оно слово Rewrite не понимает или чёрт его знает у меня уже крыша едет. Что тут не так подскажите а тоя уже совсем осдеп.......


← →
А ты уверен   (2002-09-29 03:49) [1]

, что "Workdir+"PwlBase.Pwb"" представляет "НОРМАЛЬНОЕ" имя файла.
Поскольку, если нет, то и "FileExists" не сработает и "ReWrite" - тоже!


← →
Chlavik ©   (2002-09-29 03:53) [2]

Так я же сказал что файл создаётся!!!!! Но там пустота!


← →
А как   (2002-09-29 04:49) [3]

описана переменная PwlBase?
Но стоит привести код подробнее.


← →
Chlavik ©   (2002-09-29 05:02) [4]

Вот код целой процедуры

procedure TfmMain.FormCreate(Sender: TObject);
var
cfg:file of config;
d, k:integer;


begin
ExtractFilePath(ParamStr(0));
workdir:=ExtractFilePath(ParamStr(0));

cdLetter;
BlockStatus(False);

If not FileExists("PWL Explorer.cfg") then
begin
datafile.windir[0]:="windows";
datafile.windir[1]:="win";
datafile.windir[2]:="win98";
datafile.windir[3]:="win95";
datafile.windir[4]:="winme";
datafile.windir[5]:="win9x";
datafile.windir[6]:="windows.new";
datafile.windir[7]:="winda";
datafile.windir[8]:="windows98";
datafile.windir[20]:="notfound";
for d:=9 to 19 do datafile.windir[d]:="";
exit;
end;


AssignFile(cfg,WorkDir + "PWL Explorer.cfg");

if FileSize(cfg)<>0 then
begin
Reset(cfg);
Read(cfg,datafile);
CloseFile(cfg);
DirToSave:=datafile.tosave;
PathToRepwl:=datafile.PathOfRepwl;
Checkit1:=datafile.checkit;
DateAdd1:=datafile.DateAdd;
WrtHis1:=datafile.WrtHis;
end;

// Открытие базы Pwl
If WrtHis1 Then
Begin
AssignFile(PwlBase,Workdir+"PwlBase.Pwb");
If FileExists(Workdir+"PwlBase.Pwb") then
begin
Append(PwlBase);
{ GroupBox2.Caption:="Append"};
Writeln(PwlBase,"{PWl Base File of Pwl Exlorer. For Suckers: Do not Edit!!!!!}");
end
else
begin
{ GroupBox2.Caption:="ReWrite"; }
ReWrite(PwlBase);
Writeln(PwlBase,"{!!!!!}");
k:=IOresult;
if k<>0 then Showmessage(IntToStr(k));
end;
end;


end;

Переменная PwlBase описана как глобальная PwlBase:TextFile; .....


← →
Song ©   (2002-09-29 08:40) [5]

У Вас не срабатывает
If WrtHis1 Then

А файл пустой оказывается, потому что копмилятор, исправляя Вашу оплошность сам закрывает файл, связанный с файловой переменной PwlBase. И кроме того CloseFile() я у Вас не вижу.


← →
Юрий Зотов ©   (2002-09-29 09:26) [6]

> или оно слово Rewrite не понимает

Это вряд ли

> или чёрт его знает у меня уже крыша едет.
> Что тут не так подскажите а тоя уже совсем осдеп.

Пройдите отладчиком. Сильно сберегает крышу и зрение.


← →
Chlavik ©   (2002-09-29 14:02) [7]

Я проверял отладчиком если файлп нету стрелка отладчика проходит через rewrite и writeln

Я думаю что Close File не поможет потому что этот файл открывается один раз раз как вы заметили в процудуре FormCreate

он обьявлен как глобальная переменная потму что в другой процедуре я в него собираюсь дописывать инфу я бы поместил открытие файла в ту процедуру но та процедура выполняется по Onclick и она самая "гарячая" в программе зачем мне три ста раз открывать один и тот же файл причём у величивается время выполнения той процедуры
Да кстати даже ели файл заранее был то оно всё равно туда ничего не дописывает. я этот код скопировал в отдельную новую програмку котрая состоит только из него и там он тоже н пашет! ЧТо делать?


← →
TTCustomDelphiMaster ©   (2002-09-29 14:42) [8]

А файл закрывать все таки надо.

procedure TfmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CloseFile(PwlBase);
end;


← →
MBo ©   (2002-09-29 17:17) [9]

Несколько удивляет, что серьезные люди дают советы мелкому хакеренку, желающему шарить по чужим компьютерам и воровать пароли ;((


← →
Cr@sh ©   (2002-09-29 17:22) [10]

2MBo
Серьезные дяди учат не воровать пароли, а всего лишь писать на Делфи. А дальше вся ответственность на "мелком хакеренке", мне так кажется...


← →
PaRL ©   (2002-09-29 18:17) [11]


> Серьезные дяди учат не воровать пароли, а всего лишь писать
> на Делфи. А дальше вся ответственность на "мелком хакеренке",
> мне так кажется...

Я думаю, что если уж ты взялся стать мелким хакеренком, то надо идти не на этот форум, а учить или не учить - дело самих серьезных дядей.


← →
Cr@sh ©   (2002-09-29 18:27) [12]

Я не брался, я вообще доборопорядочный гражданин.


← →
PaRL ©   (2002-09-29 18:28) [13]

Я так и подумал.


← →
Chlavik ©   (2002-09-30 13:50) [14]

Мужики вы тут пришли мне совет давать или решать вопросы на щёт
"мелких хакеров". Вопервых эта програма хакерская это прога для админов сетей позволяющая "Искать и проверять дыри в сети" :-))),
как это пишут многие... Во вторых юзер "А как" поросил меня сам привести код подробнее. В трейтих я с "PaRL" полностью согласен!.
Ну так что я жду советов!!!!! Я уже триста перепроверил прогу
но ничего не могу найти...


← →
Zz_   (2002-09-30 13:56) [15]

AssignFile(F,...);
Append(F);
if(IOResult<>0)then ReWrite(F);

А так не сработает ?


← →
Chlavik ©   (2002-09-30 14:28) [16]

Попробовал то же самое файл создаётся но ничего в него не пишет!!!!!! Я это сделал так:

AssignFile(PwlBase,Workdir +"PwlBase.Pwb");
Append(PwlBase);
If IOResult<>0 then
begin
ReWrite(PwlBase);
Writeln(PwlBase,"Do not Edit!!!!!");
end;
НЕ ПАШЕТ . Что это такое .........я уже не знаю


← →
han_malign   (2002-09-30 16:40) [17]

{$i-}...Append...IOResult...{$i+}//I/O checking кто отключать будет???


← →
MegaBass ©   (2002-09-30 16:52) [18]

после rewrite попробуй Append


← →
AlexT1000   (2002-09-30 18:15) [19]

Все работает!
procedure TForm1.BitBtn1Click(Sender: TObject);
Var Workdir : string; k : integer;
s :string;
PwlBase : TextFile;
begin
Workdir := ExtractFilePath(ParamStr(0));
s := Workdir+"PwlBase.Pwb";
AssignFile(PwlBase,s);
If FileExists(s) then
begin
Append(PwlBase);
Writeln(PwlBase,"xxxsdfxx");
end
else
begin
ReWrite(PwlBase);
Writeln(PwlBase,"xxxxx");
k:=IOresult;
if k<>0 then Showmessage(IntToStr(k));
end;
CloseFile(PwlBase); ///!!!!!!!!!!!!!!!!
end;

просто закрывать файл надо после того как пописал в него
что-нибудь


← →
TTCustomDelphiMaster ©   (2002-09-30 18:52) [20]

procedure TForm1.Button1Click(Sender: TObject);
var
F: TextFile;
begin
AssignFile(F, "c:\aa.txt");
Rewrite(F);
Writeln(F, "sssssssssssssssss");
//CloseFile(F);
end;

Файл пустой?
А теперь раскоментируйте последнюю строчку.


← →
Chlavik ©   (2002-09-30 23:01) [21]

Да пашет если файл закрыть блин но мне надо туда дописывать инфу

из цикла мне что это всё в цикл втавлять? Мне важно время выполнения цикла а пока Функция FileExists проверит наличия файла
.... А что если цикл будет повторяться 100 раз
Мне нужно один раз открыть файл что бы туда постоянно дописывать
Пасиба что есть терпение отвечать на мой давным давно надоедливый всем вопрос!!


← →
Aleks1   (2002-10-01 02:59) [22]

2 Chlavik © (30.09.02 23:01)
> Мне нужно один раз открыть файл что бы туда постоянно дописывать

Это можно. Можно открыть файл один раз и "регулярно" что-то туда дописывать. Но это НИ В КОЕМ СЛУЧАЕ не будет значить, что "дописки" уже сохранены вовеки!
Это будет значить только одно - пока не закроешь файл, считай что ты ничего не делал, а просто так, ворон считал.


← →
Ghg ©   (2002-10-01 06:44) [23]

узнал немного нового для себя


← →
Chlavik ©   (2002-10-06 19:23) [24]

Пасиба я радуплился... мне просто еще обьяснили что пока файл открыт некотрая инфа пишется в буфер и только тогда когда он преполнится или файл закроется только тогда в файл запишется инфа
Код работает нормально - программа пашет!



← →
drpass ©   (2002-10-06 23:00) [25]

Волшебное слово Flush(f:TextFile) позволит ускорить этот процесс, когда нужно


← →
Aleks1   (2002-10-07 04:11) [26]

Сумлеваюсь я однако по поводу "Пасиба я радуплился... мне просто еще обьяснили что пока файл открыт некотрая инфа пишется в буфер и только тогда когда он преполнится или файл закроется только тогда в файл запишется инфа".

Некая инфа, чаще всего пишется не в буфер, а именно на диск. Но для нормального последующего чтения данного файла, нужно еще наличие в нужном месте полной информации о реальном размещении файла на диске и его реальном размере. А вот они уже записываются на диск (по крайней мере в ФАТ) при закрытии файла.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.51 MB
Время: 0.026 c
1-56138
zam2000
2002-10-09 12:29
2002.10.17
как сделать печать в файл и указать имя файла куда писать


1-56194
Ryser
2002-10-07 16:41
2002.10.17
Приостановка выполнения цикла.


7-56369
MAYOR
2002-08-09 16:57
2002.10.17
Помогите разобраться с TCommPortDriver


7-56356
Jedak
2002-08-08 13:42
2002.10.17
Как узнать, висит ли Excel в задачах?


1-56134
Sego
2002-10-08 14:57
2002.10.17
Архивация в консольном приложении




   Наверх