Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

Глюк при сохранении.   Найти похожие ветки 

 
Hkr ©   (2004-03-06 21:08) [0]

У меня при сохранении в файл(любыми способами) иногда бывают глюки, в следствие чего файл становится насмерть испорченым, как можно это исправить(чтоб файл не портился)?


 
YurikGl ©   (2004-03-06 21:09) [1]

Проверять испортился ли файл, если испортился - писать заново.


 
Алхимик ©   (2004-03-06 21:13) [2]

Ошибка в 17-й строке.
Ты бы код дал.
P.S.
Глюки говоришь у тебя бывают... Это тебе на медицинский форум надо :)
http://gradusnik.ru/rus/forum


 
Nekto   (2004-03-06 21:56) [3]

И какой фаил ты сохраняешь??? Может с ним не тлько твоя прога работает. Нужен код!!!


 
Hkr ©   (2004-03-09 10:47) [4]


> YurikGl ©   (06.03.04 21:09) [1]
> Проверять испортился ли файл, если испортился - писать заново.


А как проверять.


> Алхимик ©   (06.03.04 21:13) [2]
> Ошибка в 17-й строке.


Какой 17-й строке?


> Ты бы код дал.
> P.S.
> Глюки говоришь у тебя бывают... Это тебе на медицинский
> форум надо :)
> http://gradusnik.ru/rus/forum

Непоможет...

> Nekto   (06.03.04 21:56) [3]
> И какой фаил ты сохраняешь??? Может с ним не тлько твоя
> прога работает. Нужен код!!!


Да нет вроде только моя, а сохранял 2 способами: TStringList.SaveToFile(...); и через потоки.


 
Плохиш   (2004-03-09 10:54) [5]


> > Nekto   (06.03.04 21:56) [3]
> > И какой фаил ты сохраняешь??? Может с ним не тлько твоя
>
> > прога работает. Нужен код!!!
>
>
> Да нет вроде только моя, а сохранял 2 способами: TStringList.SaveToFile(...);
> и через потоки.

Ой как информативно


 
Тимохов ©   (2004-03-09 10:57) [6]

Поддерживаю высказывания участников форума о необходимости получения дополнительной информации.


 
Oyster ©   (2004-03-09 11:05) [7]

Да... До какой степени файл-то портится? Что там должно быть и что получается?


 
Verg ©   (2004-03-09 11:29) [8]

Ты никогда не получишь ответа на поставленный таким образом вопрос.
Аля
"У меня программа работает неправильно. Как сделать, чтобы работала правильно?"

Однако "шуток" можешь собрать - по самое небалуйся.


 
LaidBack   (2004-03-09 11:33) [9]

Попробуй TDataFile, аналог ini-файла.
Плюсы:
1. бесплатный;
2. с исходниками;
3. сохраняет любые данные (TStrings и т.п.);
4. можно шифровать данные;
5. нет ограничения на размер файла
Вобщем идеальный вариант для сохранения настроек приложения! За 3 года его использования не возникло ни одного глюка по его вине.
Скачать можно здесь (4 Кб):
http://www.degisy.com/download.php


 
Hkr ©   (2004-03-10 13:26) [10]


> Плохиш   (09.03.04 10:54) [5]
>
> Ой как информативно

Ок, первый момент:

...
Type TZapis = Record
GroupN   : String;
Location : String;
UserN    : String;
PassWord : String;
Comment  : TStringList;
end;
Type ZapisArray = Array of TZapis;
...
var
 Zapisi   : ZapisArray;
 PassWord :String;
...

Function  TfrmMain.RandStr:String;
Const
StrArray : Array[0..65] 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",",",".","/","\","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
I,K:Integer;
S:String;
Begin
S:="";
For I:=1 to 5 do
Begin
Randomize;
K:=Random(66);
S:=S + StrArray[K];
End;
Result:=S;
end;

Procedure TfrmMain.SaveFile(FileName:String);
Var
Str:TStringList;
I,K:Integer;
begin
Str:=TStringList.Create;
Str.Clear;
Str.Add("B"+RandStr+"E"+RandStr+"G"+RandStr+"I"+RandStr+"N");
Str.Add("KZ "+IntToStr(High(Zapisi)+1));
For I:=0 to High(Zapisi) do
 Begin
 Str.Add(RandStr);
 Str.Add("Z "+IntToStr(I));
 Str.Add("GN "+Zapisi[I].GroupN);
 Str.Add("GL "+Zapisi[I].Location);
 Str.Add("UN "+Zapisi[I].UserN);
 Str.Add("UP "+Zapisi[I].PassWord);
 Str.Add("GC "+
  IntToStr(Zapisi[I].Comment.Count));
 For K:=0 To Zapisi[I].Comment.Count-1 do
 Str.Add(Zapisi[I].Comment[K]);
 End;
 Str.Add("E"+RandStr+"N"+RandStr+"D"+RandStr);
 Str.Text:=Crypt(Str.Text,PassWord,False,1);
 Str.Insert(0,"Vers 1.03 Code Type 1");
 Str.SaveToFile(FileName);
 Modify:=False;
 FilName:=FileName;
end;

вроде весь, второй:



...
const
BufSize=10240;
LogFN="ProgMon.log";

type
TCharAr=Array [1..BufSize] of char;
TMesType=(mtUnk,mtOpen,mtClose,mtActivate);

type TLogRecord = record
Time: TDateTime;
MesType:TMesType;
Handle:THandle;
FirstPar:String;
SecondPar:String;
end;
type TLogRecArr = Array of TLogRecord;
...
var
WinDir : String;
WinDirA: array [0..255] of char;

...

Function StrToCharAr(Str:String):TCharAr;
Var I:Integer;
Begin
For I:=1 to Length(Str) do
begin
Result[I]:=Str[I];
end;
end;

Procedure WriteLog(LogRec:TLogRecord);
Var
LogFS:TFileStream;
CharAr:TCharAr;
len:Integer;
begin
try
if not FileExists(WinDir+LogFN) then
LogFS:=TFileStream.Create(WinDir+LogFN,fmCreate)
else
LogFS:=TFileStream.Create(WinDir+LogFN,fmOpenReadWrite);
try
LogFS.Seek(0,soFromEnd);
LogFS.Write(LogRec.Time,SizeOf(TDateTime));
LogFS.Write(Byte(LogRec.MesType),SizeOf(Byte));
LogFS.Write(LogRec.Handle,SizeOf(THandle));

len:=length(LogRec.FirstPar);
CharAr:=StrToCharAr(LogRec.FirstPar);

LogFS.Write(len, SizeOf(Integer));
LogFS.Write(CharAr,len);

len:=length(LogRec.SecondPar);
LogFS.Write(len, SizeOf(Integer));
CharAr:=StrToCharAr(LogRec.SecondPar);
LogFS.Write(CharAr,len);
{TDateTime,Byte,THandle,Int,CharAr,Int,CharAr}

finally
LogFS.Free;
end;
except end;
end;

...

initialization
try
GetWindowsDirectory(WinDirA, 255);
WinDir:=WinDirA;
WinDir:=WinDir+"\";
except

end;
end.


> Oyster ©   (09.03.04 11:05) [7]
> Да... До какой степени файл-то портится? Что там должно
> быть и что получается?

Там же сказано насмерть, т.е. так, что его потом можно "выбрасывать", да впринципе не суть важно как и почему он портится, важно как этого избежать...


 
Алхимик ©   (2004-03-10 13:48) [11]

По первому варианту:
TStringList забываешь уничтожать.

High(Zapisi) - где задаешь длину массива Zapisi?
Str.Text:=Crypt(Str.Text,PassWord,False,1); - может шифровка глючит?
Modify:=False; - Что это?
FilName:=FileName; - Что это?

Про отступы слышал?


 
Hkr ©   (2004-03-10 15:47) [12]


> Алхимик ©   (10.03.04 13:48) [11]
> По первому варианту:
> TStringList забываешь уничтожать.

Ой... точно

> High(Zapisi) - где задаешь длину массива Zapisi?

В других процедурах

> Str.Text:=Crypt(Str.Text,PassWord,False,1); - может шифровка
> глючит?

Нет, он ведь не всегда глючит

> Modify:=False; - Что это?

Это, что все изменения сохранены.

> FilName:=FileName; - Что это?

Куда сохранять по нажатию Сохранить

> Про отступы слышал?

У меня было с отступами...
Может вообще всю прогу дать, чтоб понятнее было?



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

Текущий архив: 2004.03.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.021 c
14-1077690128
Kerk
2004-02-25 09:22
2004.03.28
Злой автобус


14-1077746287
Nick-From
2004-02-26 00:58
2004.03.28
Лекции по комбинаторике


14-1077790429
Иксик
2004-02-26 13:13
2004.03.28
Знатокам шахматного софта


1-1078393062
Бывающий
2004-03-04 12:37
2004.03.28
Как средствами ShellExecute распечатать документ?


1-1078728474
rxman
2004-03-08 09:47
2004.03.28
Примеры к Indy...