Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Delphi |
![]() ![]() |
hlopotun Member Откуда: Сообщений: 204 |
Всем доброго дня, есть csv со строками, примерно такого вида: "Field1";"Field2";"Field3";"Field4" "123";"345 577 789";"abcd";"ttttt" "654";"555";"aaaa";"bbbb" в некоторых полях встречается перевод строки. Читаю так: CsvStr := TStringList.Create; CsvStr.StrictDelimiter := True; // на случай если не будет QuotedChar (но в даннон случае он есть) CsvStr.Delimiter := ';'; CsvStr.QuoteChar := '"'; CsvStr.LineBreak := '"'+sLineBreak; CsvStr.DelimitedText := sStr; // с содержимым файла всёравно разбивка на строки происходит по переводу строки. Всё уже перепробовал, не пойму где ошибаюсь. Посоветуйте чтото. Спасибо. |
23 фев 21, 14:27 [22285138] Ответить | Цитировать Сообщить модератору |
Cobalt747 Member Откуда: Сообщений: 2282 |
Рекомендую пройти отладкой по методу TStrings.SetDelimitedText - там вы все увидите сами |
23 фев 21, 14:32 [22285140] Ответить | Цитировать Сообщить модератору |
DHDD Member Откуда: Сообщений: 47 |
hlopotun, https://blogs.embarcadero.com/super-fast-csv-files-processing-with-winsoft-csv-library/ |
23 фев 21, 15:00 [22285155] Ответить | Цитировать Сообщить модератору |
hlopotun Member Откуда: Сообщений: 204 |
Cobalt747, странно, LineBreak в коде даже не упоминается ...
значит это что DelimetedText даже нет смысла использовать. Я тут пример немного упростил, на самом деле читается через LoadFromFile, а он судя по исходнику использует SetTextStr в котором LineBreak уже присутствует:
|
||
23 фев 21, 15:05 [22285163] Ответить | Цитировать Сообщить модератору |
andreymx Member Откуда: Запорожье Сообщений: 54830 |
сделать замену в sStr #13#10 на какую-то подстроку вида '{#13#10}' а потом пробежаться по итемсам и поменять назад будет помедленнее ( |
23 фев 21, 16:33 [22285207] Ответить | Цитировать Сообщить модератору |
Dimitry Sibiryakov Member Откуда: Сообщений: 52449 |
Какой только фигнёй люди не будут маяться место написания простенького автомата на пару экранов... Posted via ActualForum NNTP Server 1.5 |
23 фев 21, 16:53 [22285217] Ответить | Цитировать Сообщить модератору |
_Vasilisk_ Member Откуда: Украина, Харьков Сообщений: 12572 |
|
||||
23 фев 21, 16:56 [22285219] Ответить | Цитировать Сообщить модератору |
andreymx Member Откуда: Запорожье Сообщений: 54830 |
|
||||||||
23 фев 21, 17:04 [22285222] Ответить | Цитировать Сообщить модератору |
_Vasilisk_ Member Откуда: Украина, Харьков Сообщений: 12572 |
string.Split([';'])+ 5 строк на цикл чтения файла |
||||
23 фев 21, 17:20 [22285230] Ответить | Цитировать Сообщить модератору |
andreymx Member Откуда: Запорожье Сообщений: 54830 |
|
||||||||
23 фев 21, 17:37 [22285234] Ответить | Цитировать Сообщить модератору |
_Vasilisk_ Member Откуда: Украина, Харьков Сообщений: 12572 |
|
||||
23 фев 21, 17:41 [22285237] Ответить | Цитировать Сообщить модератору |
andreymx Member Откуда: Запорожье Сообщений: 54830 |
https://www.sql.ru/forum/176889-2/analog-funkcii-split-v-delphi |
23 фев 21, 17:44 [22285238] Ответить | Цитировать Сообщить модератору |
Все форумы / Delphi | ![]() |