Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

запись в текстовый файл длинных строк [D6, WinXP]


makey ©   (2005-05-31 15:53:00) 

Подскажите можно ли записать в текстовый файл строку из 360 символов? запись через write или WriteBuffer(Str[0], Length(Str)) рубит строку на две.


Anatoly Podgoretsky   (2005-06-01 09:04:00) [1]

makey ©   (01.06.05 05:50) [15]
Где код записи, приведенный в [0] код не рабочий.

И приведи хекс коды начиная от
Г. БАРНАУЛА**
",",656052,


evvcom   (2005-06-01 08:36:00) [2]


> используя цикл for i:=1 to length(str) do write(f,str[i]);

А цикл то зачем? Всегда писал write(f,str); и не было проблем, а где надо было #13#10 вставить употреблял writeln(f [, str]); Зачем огород городить?


dmitry501   (2005-06-01 06:10:00) [3]

Вот, попробовал:


procedure TForm1.Button1Click(Sender: TObject);
var
 s: AnsiString;
 fs: TFileStream;

begin
 s := '"АНКТ",1,"01/06/2005","ТУРСУНОВ","АКРАМЖОН","АСРОРОВИЧ","М","СТАНДАРТ","11/05/1956",0,0,0,"СТАНДАРТ","САМАРКАНД","","УЗ Б ЕКИСТАН РЕСПУБЛИКА","","","ПАСПОРТ РОССИИ","ПАСПОРТ РОССИИ","01","04",576186,"24/12/2004","ТОМ ЖЕЛЕЗНОДОРОЖНОГО РАЙОНА Г. БАРНАУЛА",'+
   '",656052,АЛТАЙСКИЙ КРАЙ,,БАРНАУЛ Г,,КРАСНЫЙ ТЕКСТИЛЬЩИК ПЕР,Д.91,,",",656052,АЛТАЙСКИЙ КРАЙ,,БАРНАУЛ Г,,КРАСНЫЙ ТЕКСТИЛЬЩИК ПЕР,Д.91,,",""';
 fs := TFileStream.Create('test.txt', fmCreate);
 try
   fs.WriteBuffer(S[1], Length(S));
 finally
   fs.Free;
 end;
end;


Все нормально, нет в выходном файле переносов...


makey   (2005-06-01 05:50:00) [4]

Чтобы не вызывать споров о том, какие символы стоят в строке привожу ее пример.

Это строка которую я пытаюсь записать.
"АНКТ",1,"01/06/2005","ТУРСУНОВ","АКРАМЖОН","АСРОРОВИЧ","М","СТАНДАРТ","11/05/1956",0,0,0,"СТАНДАРТ","САМАРКАНД","","УЗБ ЕКИСТАН РЕСПУБЛИКА","","","ПАСПОРТ РОССИИ","ПАСПОРТ РОССИИ","01","04",576186,"24/12/2004","ТОМ ЖЕЛЕЗНОДОРОЖНОГО РАЙОНА Г. БАРНАУЛА",",656052,АЛТАЙСКИЙ КРАЙ,,БАРНАУЛ Г,,КРАСНЫЙ ТЕКСТИЛЬЩИК ПЕР,Д.91,,",",656052,АЛТАЙСКИЙ КРАЙ,,БАРНАУЛ Г,,КРАСНЫЙ ТЕКСТИЛЬЩИК ПЕР,Д.91,,",""

А вот так она выглядит в файле (** обозначено место где появляются #13#10)

"АНКТ",1,"01/06/2005","ТУРСУНОВ","АКРАМЖОН","АСРОРОВИЧ","М","СТАНДАРТ","11/05/1956",0,0,0,"СТАНДАРТ","САМАРКАНД","","УЗБ ЕКИСТАН РЕСПУБЛИКА","","","ПАСПОРТ РОССИИ","ПАСПОРТ РОССИИ","01","04",576186,"24/12/2004","ТОМ ЖЕЛЕЗНОДОРОЖНОГО РАЙОНА Г. БАРНАУЛА**
",",656052,АЛТАЙСКИЙ КРАЙ,,БАРНАУЛ Г,,КРАСНЫЙ ТЕКСТИЛЬЩИК ПЕР,Д.91,,",",656052,АЛТАЙСКИЙ КРАЙ,,БАРНАУЛ Г,,КРАСНЫЙ ТЕКСТИЛЬЩИК ПЕР,Д.91,,",""


OSokin   (2005-05-31 18:11:00) [5]

ФЛУУД... Неужели нельзя просто ответить?

Нужно или через BlockWrite (поставив вторым параметром в Rewrite размер записи), - это скорее всего не прокатит, не проверял, - или записывать по одному симоволу, используя цикл for i:=1 to length(str) do write(f,str[i]);


  (2005-05-31 17:23:00) [6]

Удалено модератором


Alexander Panov   (2005-05-31 17:19:00) [7]

Poirot ©   (31.05.05 17:17) [11]

Да автор просто не знает, что некоторые просмотрщики переносят длинные строки


Poirot   (2005-05-31 17:17:00) [8]

Как то разговор от третьих лиц:)
просто уже очень интересно, а что вообще в файле? если посмотреть например его хексовым редактором - пчто есть "рубит строку на две." :)) просто, имхо, само ничего не мождет происходить:) Это в сказках только:)


Amoeba   (2005-05-31 17:13:00) [9]


> Alexander Panov ©   (31.05.05 17:04) [8]

Sorry, недостаточно внимательно прочел 1-й пост автора вопроса. По сему и вызвал недоумение 2-й.


Anatoly Podgoretsky   (2005-05-31 17:09:00) [10]

Amoeba ©   (31.05.05 17:02) [7]
У него на это были основания, но неверные.


Alexander Panov   (2005-05-31 17:04:00) [11]

Amoeba ©   (31.05.05 17:02) [7]
В топике:
Подскажите можно ли записать в текстовый файл строку из 360 символов? запись через write или WriteBuffer(Str[0], Length(Str)) рубит строку на две.

Где здесь про опасения?

>автор

Не надо смотреть текстовый файл неправильным редактором, не поддерживающим отображение длинных строк.


Amoeba   (2005-05-31 17:02:00) [12]


> Alexander Panov ©   (31.05.05 16:57) [6]
> Amoeba ©   (31.05.05 16:33) [3]
> С какой-такой сырости ему там ни с того ни с сего самому
> появиться.
> Amoeba ©   (31.05.05 16:45) [5]
> А кто утверждает обратное?
>
> А кто утверждает, что он там сам появлялся?

У автора того поста есть такое опасение, что перевод каретки можеть оказатьеся в строке без его ведома.


Alexander Panov   (2005-05-31 16:57:00) [13]

Amoeba ©   (31.05.05 16:33) [3]
С какой-такой сырости ему там ни с того ни с сего самому появиться.

Amoeba ©   (31.05.05 16:45) [5]
А кто утверждает обратное?


А кто утверждает, что он там сам появлялся?


Amoeba   (2005-05-31 16:45:00) [14]


> Alexander Panov ©   (31.05.05 16:34) [4]
> Amoeba ©   (31.05.05 16:33) [3]
>
> Так содержимое длинных строк не ограничено отображаемыми
>  символами.

А кто утверждает обратное?


Alexander Panov   (2005-05-31 16:34:00) [15]

Amoeba ©   (31.05.05 16:33) [3]

Так содержимое длинных строк не ограничено отображаемыми  символами.


Amoeba   (2005-05-31 16:33:00) [16]


> Poirot ©   (31.05.05 16:13) [2]
> А можно ешшо вопрос:)
> А в строке нет перевода коретки?:) #13#10?:))

С какой-такой сырости ему там ни с того ни с сего самому появиться.


Poirot   (2005-05-31 16:13:00) [17]

А можно ешшо вопрос:)
А в строке нет перевода коретки?:) #13#10?:))


begin...end   (2005-05-31 15:58:00) [18]

> makey ©   (31.05.05 15:53)

> можно ли записать в текстовый файл строку из 360 символов?

Можно.

> WriteBuffer(Str[0], Length(Str))

Почему 0, а не 1? И где здесь работа с текситовым файлом?

--------------------
Sorry, I'm drunk now


Наверх

Титульная страница Поиск, карта сайта Написать письмо