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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.027 c
11-1057512455
Ajax
2003-07-06 21:27
2004.03.28
Смена языка интерфейса


7-1072692942
Romkin
2003-12-29 13:15
2004.03.28
TRichTextBox, определение размера текста


1-1079038884
Lonely_Wolf
2004-03-12 00:01
2004.03.28
RichEdit


14-1078331537
Rouse_
2004-03-03 19:32
2004.03.28
С Днем Рождения 03.03.2004


6-1074156095
yurikon
2004-01-15 11:41
2004.03.28
Как победить sms-оператора





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский