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

Вниз

Запись/чтение текущего времени в файл   Найти похожие ветки 

 
jumpingjack ©   (2005-08-04 12:41) [0]

Здравствуйте, помогите. плз! Никак не могу понять в чем может быть проблема. Записываю время в файл. Затем считываю его оттуда, получается примерно такое: 164.172.136, 00:50:255.. подскажите в чем ошибка?

Данные в файл записываю следующим образом:
procedure TForm1.Button3Click(Sender: PObj);
var
 PackNow : TDateTime;
 Package : string;
 OutFile : File;
 PackLen : Integer;
begin
 // Узнаем время
 PackNow := Now;

 // Формируем Package
 Package := chr(str2int(Date2StrFmt("dd", PackNow)));
 Package := Package + chr(str2int(Date2StrFmt("MM", PackNow)));
 Package := Package + chr(str2int(Date2StrFmt("yy", PackNow)));
 Package := Package + chr(str2int(Time2StrFmt("hh", PackNow)));
 Package := Package + chr(str2int(Time2StrFmt("mm", PackNow)));
 Package := Package + chr(str2int(Time2StrFmt("ss", PackNow)));  
 PackLen := Length(Package);
 
 AssignFile(OutFile, Edit1.Text);
 if FileExists(Edit1.Text) then      
 begin
  // Если файл существует, открываем и ищем конец файла
   Reset(OutFile, 1);
   while not eof(OutFile) do BlockRead(OutFile, j, 1);
 end
 else Rewrite(OutFile, 1);
   
 BlockWrite(OutFile, PackLen, 2);               // Записываем длину последующей записи
 BlockWrite(OutFile, Package, Length(Package)); // Записываем Package  
 CloseFile(OutFile);
end;


Читаю так:
procedure TForm1.Button2Click(Sender: PObj);
var
 F         : File;
 Package   : array [0..MaxN] of char;
 TimeStr   : String;
 BSize     : Integer;
begin
 AssignFile(F, Edit1.Text);
 Reset(F, 1);
 ComboBox1.Clear;
 while not EOF(F) do
 begin
   Package := "";
   BlockRead(F, BSize, 2);        // Узнаем размер последующей записи
   BlockRead(F, Package, BSize);  // Читаем запись
   TimeStr := "";
   if Length(int2str(Ord(Package[0]))) < 2 then TimeStr := "0";
   TimeStr := TimeStr + int2str(Ord(Package[0])) + ".";
   if Length(int2str(Ord(Package[1]))) < 2 then TimeStr := TimeStr + "0";
   TimeStr := TimeStr + int2str(Ord(Package[1])) + ".";
   if Length(int2str(Ord(Package[2]))) < 2 then TimeStr := TimeStr + "0";
   TimeStr := TimeStr + int2str(Ord(Package[2])) + ", ";
   if Length(int2str(Ord(Package[3]))) < 2 then TimeStr := TimeStr + "0";
   TimeStr := TimeStr + int2str(Ord(Package[3])) + ":";
   if Length(int2str(Ord(Package[4]))) < 2 then TimeStr := TimeStr + "0";
   TimeStr := TimeStr + int2str(Ord(Package[4])) + ":";
   if Length(int2str(Ord(Package[5]))) < 2 then TimeStr := TimeStr + "0";
   TimeStr := TimeStr + int2str(Ord(Package[5]));    
   ComboBox1.Add(TimeStr);  
 end;
 CloseFile(F);
end;



 
Thaddy   (2005-08-04 13:08) [1]

This code is shit, that&#39;s the problem ;)
Use Date2strFmt and Time2strFmt to encode as string, toghether with *str2DateTimeFmt* to decode to date.
See the good! documentation inside KOL.PAS.
Also you could usethe systemtime things instead.


 
jumpingjack ©   (2005-08-04 13:44) [2]

Насколько я понял тут проблема в форматах чтения/записи в BlockRead\BlockWrite.. т.к., когда я работал с текстовым файлом - все было хорошо с Date2StrFmt!


 
pRibambAs   (2005-08-05 12:29) [3]

Если так хочется писать дату в бинарном виде, то уж лучше использовать TDateTime. Правда, запись будет занимать в файле на два байта больше, чем в твоем нынешнем коде. Но геморроя куда меньше: TDateTime легко конвертится во что хочешь.


 
jumpingjack ©   (2005-08-05 20:18) [4]

Проблема была в том, что я записывал строки большие чем 250 символов в файл через blockwrite. Я вообще отказался от строк и записываю время через переменные byte - теперь все работает :)


 
Anatoly Podgoretsky ©   (2005-08-06 15:33) [5]

Зачем вставляешь месяц во временную часть.
Дни 10..31 тебя явно не интерусуют.
В общем куча ошибок.

Зачем делаешь такую кучу операций, когда все делается с помощью одного вызова
Package := FormatDateTime("ddMMyyhhnnss", Now);



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

Форум: "KOL";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.04 c
2-1141677008
Out
2006-03-06 23:30
2006.03.26
Утечка мозгов


2-1141880160
Rado
2006-03-09 07:56
2006.03.26
dbgrid


15-1141127501
ISP
2006-02-28 14:51
2006.03.26
Ну что, пора и на мобилы антивирус ставить....?


2-1141169056
spogi
2006-03-01 02:24
2006.03.26
Kak v QReport pokazat dannie iz raznix tablic, ili summirovat ix


11-1122833928
Thaddy
2005-07-31 22:18
2006.03.26
kol skype demo





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