|
|
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть Certificate.SubjectName, который содержит строку, разделенную запятыми. Код: pascal 1. можно это конечно загнать в StringList и разбить по DelimitedText, но у меня delphi 7 такое не может(код на нем, переносить нельзя), потому как не учитывает двойные кавычки и поле STREET понимает после разбиения как 4 поля( в этом примере). Вопрос - как получить значение каждого поля, чтобы учесть экранирование двойными кавычками? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2019, 16:20 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
evgen29как получить значение каждого поля, чтобы учесть экранирование двойными кавычками? Простенький парсер на основе конечного автомата пишется за пару часов с нуля. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2019, 16:26 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
13.06.2019 16:20, evgen29 пишет: > можно это конечно загнать в StringList и разбить по DelimitedText, но у меня delphi 7 такое не может QuoteChar поставь нужный Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2019, 16:31 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
Раньше вроде как-то так делали - тексте листа через стринг реплэйс меняли ЗПТ на #13#10, если я не ошибаюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2019, 16:31 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
Заменить имена полей и = на CRLF, сложить в стринг лист. У каждой строки в списке - убрать последнию запятую и убрать пустые строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2019, 17:01 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
сделал через регулярные выражения. Пример с одной кнопкой и полем ввода в поле ввода текст такой же как в начале может кому пригодится. ps: регулярку конечно надо будет поменять в дальнейшем, учесть нюансы типа О'Брайан и прочее. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. исходник модуля прикреплен и доступен по ссылке на проект: https://regex.sorokin.engineer/ru/latest/index.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2019, 23:57 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
evgen29Вопрос - как получить значение каждого поля, чтобы учесть экранирование двойными кавычками?получать SubjectName из сертификата сразу в нормальном виде, с разбиением по строкам и без лишних кавычек: CertNameToStr + CERT_X500_NAME_STR or CERT_NAME_STR_CRLF_FLAG or CERT_NAME_STR_NO_QUOTING_FLAG ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2019, 00:08 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
Ghost Writer, а можно если не трудно строку кода, как метод объекта capicom или cadescom, а не набор констант? Просто к чему этот набор констант привязан не совсем ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2019, 10:04 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
Дарю . В Delphi 7 правда в таком виде не скомпилируется, но поменять record на object, либо вытащить методы из recorda, думаю труда не составит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2019, 10:28 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
А на кавычках внутри кавычек эта регулярка сломается ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2019, 10:58 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
Василий 2А на кавычках внутри кавычек эта регулярка сломается ? в этом и проблема(разбила строку для наглядности) --проблема адресе --в подразделении и организации могут быть и кавычки и запятые авторSN = Фамилия, G = Имя, T = Должность, Неструктурированное имя = Тестовый, STREET = "Тестовый адрес, улица, дом, квартира", CN = ТЕСТ, OU = Подразделение, O = ИП Тест, L = Истра, S = Московская, C = RU, E = test@test.ru, ИНН = 123456789012, ОГРН = 1234567890123 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2019, 11:15 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
Надо смотреть, как представлены кавычки внутри кавычек. Самый лучший вариант - в #2 - сделать самому. Через stringlist тоже можно, если способ вложенности кавычек в исходных данных совпадает с тем, что он ожидает (удвоение, емнип). Если там, например, экранирование, то облом. Можно еще поискать функцию/модуль чтения CSV, он должен такие случаи обрабатывать. Но опять же способ вложенности кавычек должен совпасть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2019, 13:48 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
ТС патологически ленив. Написать годную ф-цию, обрабатывающую все нюансы, можно за полчаса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2019, 13:51 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
L_argo, за 5-10 минут. обычный for - case str[i] со всеми ключевыми знаками обработки. а так же 1 - 2 флага, типа bool которые включают разделитель между ключом = значением. Второй же, обозначающий начало " и быстрый проглот строки до " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2019, 21:36 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
Хватает за глаза для простого парсинга. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2019, 21:48 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
А, там запятые в адресе. Меняем Код: pascal 1. 2. на Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2019, 21:50 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
evgen29а можно если не трудно строку кода, как метод объекта capicom или cadescom, а не набор констант? Просто к чему этот набор констант привязан не совсем ясно.CertNameToStr это функция CryptoApi. Не ожидал я, что используешь "capicom или cadescom". Ну тогда примерно так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. лишние пробелы сам... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2019, 23:18 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
rgreat Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Это не универсально. Набор атрибутов заранее может быть неизвестен, могут встретиться экзотические. А бывает, что атрибуты встречаются неоднократно, но с разными значениями. Например, на скриншоте OU встречается аж 4 раза (и L дважды). Данная функция всегда будет находить только первое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2019, 23:27 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
Ghost Writerлишние пробелы сам...ну ладно Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2019, 23:37 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
упс, кодировочка сбилась ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2019, 23:39 |
|
||
|
разбор строки по разделителю
|
|||
|---|---|---|---|
|
#18+
Ghost Writer, А я и написал что эта фнкция удобна для простого парсинга. Если там идиотский формат с дублированием ключей - фигли уж тут тогда, все одно специфический парсер нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2019, 23:40 |
|
||
|
|

start [/forum/topic.php?fid=58&tid=2039374]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
152ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 522ms |

| 0 / 0 |
