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

Вниз

Как удалить из 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.039 c
14-1117049969
Nic87
2005-05-25 23:39
2005.06.14
Worlds3D - присоединяйтесь!


14-1116854832
msguns
2005-05-23 17:27
2005.06.14
Ну как дети малые...


8-1109343555
Pers
2005-02-25 17:59
2005.06.14
Изображения


14-1117090203
Prohodil Mimo
2005-05-26 10:50
2005.06.14
По просьбе Автомодератора


1-1117175223
ingine
2005-05-27 10:27
2005.06.14
Удаление Строк в StringGrid





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