Главная страница
    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.228 c
15-1140039304
Piter
2006-02-16 00:35
2006.03.26
Заправка картриджей!


3-1138877901
Alex_1234
2006-02-02 13:58
2006.03.26
Группировка по временным интервалам...


15-1141385636
Rule
2006-03-03 14:33
2006.03.26
Как расшарить СОМ-порт по сети


15-1141295917
ALEXD31
2006-03-02 13:38
2006.03.26
Магнитооптический диск с файловой системой HTFS


15-1141100242
paza
2006-02-28 07:17
2006.03.26
Нестандартные шрифты





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