Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Основная";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.008 c
1-56142
oeg_er
2002-10-07 08:10
2002.10.17
Большой фонт -> маленький?


8-56236
Ivanovich
2002-06-14 08:01
2002.10.17
Как изменить вид формы


3-55927
Valery_N
2002-09-24 17:10
2002.10.17
Возможно ли по Enterу переходить из последнего поля DBgrid к


3-55961
Друпи
2002-09-24 23:24
2002.10.17
Запрос SQL


1-56067
andsm
2002-10-08 13:59
2002.10.17
Отладка MIDAS приложений





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский