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

Вниз

Как удалить из txt пустую строку? Ъ   Найти похожие ветки 

 
FANAT ©   (2005-05-31 07:34) [0]

не могу ни как додуматься как удалить из txt.
вообще подразумевается что приоткрытии документа считывается последнии 4 символа и переводятся в integer....
но бывает иногда что в txt пишется пустая строка Ъ.
вот как бы в планах при открытии удалять эту Ъ - а потом брать 4 символа....
все как бы легко, но не могу избавиться от Ъ.
подскажите пожалуйста...


 
Alx2 ©   (2005-05-31 08:34) [1]

Четыре символа - они обязательно из множества ["0".."9"]? Или хранятся в бинарном виде?

Если для случая ["0".."9"], то примерно так:


 Function ReadLast4DigitsFiltered(Const FileName: String): Integer;
 Var
   Buf: Array[1..7] Of char;
   k: Integer;
 Begin
   With TFileStream.Create(FileName, fmOpenRead) Do
     Try
       If Size > 5 Then
         Begin
           Seek(Size - 6, soFromBeginning);
           If Read(Buf, 6) <> 6 Then
             Raise Exception.Create("Read error");
           For k := 1 To 6 Do
             If Not (Buf[k] In ["0".."9"])
               Then
               Buf[k] := " ";
           Buf[7] := #0;
           Result := StrToInt(Buf)
         End;
     Finally
       Free;
     End;
 End;


 
Antonn ©   (2005-05-31 08:35) [2]

FANAT ©   (31.05.05 7:34)
может TIniFile попробывать:)


 
Alx2 ©   (2005-05-31 08:38) [3]

к посту [1]
Надо бы для "If Size > 5 Then" добавить обработку в "else"


 
Alx2 ©   (2005-05-31 08:47) [4]

Сорри. Пост [1] с глюками :)


 
FANAT ©   (2005-05-31 09:01) [5]

блин.... слава всевышнему...
оказывается это сложно.... а то я уж подумал что я вообще ни чего не могу...
так какие еще идеи есть?


 
Digitman ©   (2005-05-31 09:07) [6]


> какие еще идеи есть?


если файл небольшой по размеру, грузить его в стринг-лист, в цикле от последней строки до первой искать непустую строку и взять из нее ожидаемые символы


 
Anatoly Podgoretsky ©   (2005-05-31 09:13) [7]

А есть ли мальчик?


 
Alx2 ©   (2005-05-31 09:21) [8]

FANAT ©   (31.05.05 9:01) [5]
>оказывается это сложно....


Ничего сложного. Просто то, что я написал впервые - глючное. Так как не проверял на случаях пустая строка + конец файла.

Этот вариант ловит  четыре подряд идущих цифры ["0".."9"] если они располагаются не далее, чем в трех байтах от конца файла и конвертирует их в integer  :)


 Function ReadLast4DigitsFiltered(Const FileName: String): Integer;
 Const
   BufSize = 7;
 Var
   Buf: Array[1..BufSize] Of char;
   k, CharCount, WasDigits: Integer;
 Begin
   With TFileStream.Create(FileName, fmOpenRead) Do
     Try
       If Size < BufSize Then
         CharCount := Size
       Else
         CharCount := BufSize;
       Seek(Size - CharCount, soFromBeginning);
       If Read(Buf, CharCount) <> CharCount Then
         Raise Exception.Create("Read error");

       WasDigits := 0;
       For k := 1 To BufSize Do
         If Not (Buf[k] In ["0".."9"])
           Then
           If WasDigits > 0 Then
             Buf[k] := #0
           Else
             Buf[k] := " "
         Else
           inc(WasDigits);

       If WasDigits <> 4 Then
         Raise Exception.Create("Data error");

       Result := StrToInt(Buf)

     Finally
       Free;
     End;
 End;



 
Anatoly Podgoretsky ©   (2005-05-31 09:36) [9]

Не мешало бы увидеть эту "неправильную" строку в шестнадцатиричном виде.


 
Alx2 ©   (2005-05-31 09:46) [10]

Anatoly Podgoretsky ©   (31.05.05 9:36) [9]

..... $0D,$0A,$1A ?



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

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

Наверх




Память: 0.49 MB
Время: 0.065 c
6-1111859936
serg128
2005-03-26 20:58
2005.06.14
Как закачать файл с ftp сервера?


1-1117282425
PIF
2005-05-28 16:13
2005.06.14
Компиляция res файла при старте приложения


3-1115549163
_e_u_
2005-05-08 14:46
2005.06.14
Добавление строки в таблицу ;)


1-1117102427
Antonn
2005-05-26 14:13
2005.06.14
Несколько вопросов по правильности кода


1-1117278487
Bondar
2005-05-28 15:08
2005.06.14
function SearchParam