Автор | Сообщение |
|
| постоянный участник
|
Пост N: 1318
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.06.10 01:49. Заголовок: Беда с функцией AfterATNUM() ....
Делал обработку текстового файла (в конце строки всегда стоит CHR(13)+CHR(10) ) Не могу получить первую строку функцией AfterATNUM() .... Результирующий файл различается от входящего ! Может как нибудь по другому можно ? Вот примерный текст программы: Скрытый текст FUNCTION MAIN() LOCAL nI, nLen, cSource, cTarget := "", cTemp cSource := FILESTR("User5.txt") nLen := NUMAT( CHR(13)+CHR(10), cSource ) ? " Kol-vo CHR(13)+CHR(10) = ",nLen FOR nI := 1 TO nLen ? nI cTemp := AfterATNUM( CHR(13)+CHR(10), cSource, nI ) ? cTemp,"-",LEN(cTemp) // ---- обработка строки ------ // cTemp := MyCRYPT(cTemp) cTarget := cTarget + cTemp + CHR(13)+CHR(10) NEXT STRFILE(cTarget,"User52.txt",.F.) WAIT RETURN NIL
|
|
|
|
Ответов - 52
, стр:
1
2
3
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 1328
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.06.10 17:01. Заголовок: Dima пишет: Возможн..
Dima пишет: цитата: | Возможно где то косяк в твоей функции (я особо не вникал) Хотя довольно странно |
| Косяк в выборке строки: TokenInit(@cSource, cTok,, @cTokenEnv) DO while ! TokenEnd(@cTokenEnv) cLex := TokenNext(cSource,, @cTokenEnv) ? "Stroka:",nI++ ?? ":",cLex enddo Отдельно даже сделал. Не работает TokenNext !
|
|
|
|
| |
Пост N: 1704
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.06.10 17:07. Заголовок: Содержимое user5.txt..
Содержимое user5.txt 12345 00000 11111 w:\fond9" 22222 absder проверка В 4 строке Фсё сломается , хотя после нее (и до нее) все верно....... Разделители у тебя указаны явно , ХЗ в чем дело. Перевод строки везде есть ЗЫ Результат
|
|
|
|
| постоянный участник
|
Пост N: 1329
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.06.10 18:35. Заголовок: Если заменить cTok :..
Если заменить cTok := "{}" заместо Chr(13) + Chr(10) тоже самое происходит ! Видать все таки дело в TokenNext(cSource,, @cTokenEnv) ! Хотя если убрать " - то все нормально проходит !!! Все дело в кавычках " !!! Надо писать разработчикам TokenNext ! Кто сможет ?
|
|
|
|
| |
Пост N: 1705
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.06.10 19:04. Заголовок: Andrey пишет: Надо ..
Andrey пишет: цитата: | Надо писать разработчикам TokenNext ! Кто сможет ? |
| Могу ошибаться , но кажется Павел уже занимается этим.
|
|
|
|
| постоянный участник
|
Пост N: 1330
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.06.10 19:27. Заголовок: Переделал программу ..
Переделал программу на твою функцию. С простой строчкой нормально, с CVS-строкой содержащие кавычки (") - опять косяки !!! Вот пример в архиве ---------- Андрей не надо выкладывать мое мыло ладно ? Ссылку потер Утилита dub.exe - сравнение 2х-файлов. Где бы такую Виндовую взять ?
|
|
|
|
| |
Пост N: 1706
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.06.10 19:47. Заголовок: Andrey Уверен что в..
Andrey Уверен что в твоем файлике каждая кавычка имеет пару (я не чекал) ? Просто вспомнил что если открывать CSV файлик в котором есть не парные кавычки в EXCEL то после такой кавычки (все что после нее) типа съедается EXCEL (пока не начнешь редактировать) Впрочем о чем это я ? Excel тут не при чем , это так просто вспомнилось... И потом , Андрей скажи ну зачем тебе в этом файле нужны кавычки ? Сейчас 20100601,114,"SERVER-XP","Андрей", Так уже не достаточно будет ? 20100601,114,SERVER-XP,Андрей, В качестве разделителя если не ошибаюсь (в CSV) принято ставить ; PS А не парные кавычки у тебя есть по ходу , только что заметил.
|
|
|
|
| Администратор
|
Пост N: 1465
Зарегистрирован: 23.05.05
|
|
Отправлено: 01.06.10 20:30. Заголовок: Проблема заключается..
Проблема заключается не в token в разных вариациях, а в HB_Crypt. В результате ее работы в зашифрованную строку случайным образом попадают коды #13#10, которые затем и портят всю малину
|
|
|
|
| |
Пост N: 1707
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.06.10 20:36. Заголовок: Pasha Можешь на при..
Pasha Можешь на примере показать (если это реально) ?
|
|
|
|
| |
Пост N: 1708
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.06.10 20:52. Заголовок: Andrey пишет: Утил..
Andrey пишет: цитата: | Утилита dub.exe - сравнение 2х-файлов. Где бы такую Виндовую взять ? |
| Поиск поюзай ;) На вскидку (проверил) такая функция есть в Total Commander PS Юзани (нужна рега) _http://forum.ru-board.com/forum.cgi?action=filter&forum=35&filterby=topictitle&word=compare
|
|
|
|
| Администратор
|
Пост N: 1466
Зарегистрирован: 23.05.05
|
|
Отправлено: 01.06.10 20:56. Заголовок: А что там показывать..
А что там показывать, двоичные коды, что ли ? результатом hb_crypt('20100601,114,"SERVER-XP","Андрей","","w:\fond9\abonent4.exe","4.66f",20100521,"Системный а.",101,T,F,F,318288412,10,"Net","Vxod",2,"Вход успешен !",1', cPassword) будет строка, содержащая Chr(13)+Chr(10) и никакой другой разделитель использовать нельзя, так как результат работы любого симметричного криптоалгоритма (хотя hb_crypt до криптоалгоритма не дотягивает) может содержать этот разделитель, что в дальнейшем исказит дешифровку. Андрею можно посоветовать сбрасывать лог не в текстовый файл, а в дбф с мемо-полем. Такой алгоритм будет работать
|
|
|
|
| |
Пост N: 1709
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.06.10 21:30. Заголовок: Pasha То есть функц..
Pasha То есть функцией hb_crypt пользоваться не следует , так как результат может быть не предсказуем... Так ?
|
|
|
|
|
| Администратор
|
Пост N: 1467
Зарегистрирован: 23.05.05
|
|
Отправлено: 01.06.10 21:50. Заголовок: Нет конечно. Результ..
Нет конечно. Результатом этой функции является зашифрованная строка, содержажая коды от 0 до 255 в любой последовательности. При этом нельзя использовать никакой разделитель строк, так как этот разделитель, состоящий из одного или более символов, может оказаться в зашифрованной строке. Ей можно пользоваться, когда длина строки содержится вне строки. К примеру, если использовать такой формат: 2-4 байта - длина строки, строка, следующая строка с префиксом - ее длиной, и т.д. Или файл с мемо-полем, что тоже самое.
|
|
|
|
| постоянный участник
|
Пост N: 1331
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.06.10 22:15. Заголовок: Pasha пишет: Или фа..
Pasha пишет: цитата: | Или файл с мемо-полем, что тоже самое. |
| Не хочу заморачиваться с dbf ! Pasha пишет: цитата: | К примеру, если использовать такой формат: 2-4 байта - длина строки, строка, следующая строка с префиксом - ее длиной, и т.д. |
| Вот это интересней, только не пойму как считывать строку ? Как будет выглядеть файл (2-3 строчки) ?
|
|
|
|
| Администратор
|
Пост N: 1468
Зарегистрирован: 23.05.05
|
|
Отправлено: 01.06.10 22:42. Заголовок: Примерно так. Пусть ..
Примерно так. Пусть aStr - массив строк Запись массива строк в строку: cStr := "" AEval(aStr, {|c| cStr += I2Bin(len(c)) + c}) Чтение из строки в массив строк: nPos := 1 while nPos <= len(cStr) nLen := Bin2I(Substr(cStr, nPos, 2)) nPos += 2 AADD(aStr, Substr(cStr, nPos, nLen)) nPos += nLen enddo внутрь цикла можно вставить шифровку/дешифровку
|
|
|
|
| постоянный участник
|
Пост N: 1332
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.06.10 23:03. Заголовок: Нет, ни как не въеду..
Нет, ни как не въеду ! Дай пожалуйста образец файла, как он будет выглядеть ? Черкани 3 строчки файла....
|
|
|
|
| Администратор
|
Пост N: 1469
Зарегистрирован: 23.05.05
|
|
Отправлено: 02.06.10 08:08. Заголовок: ДлинаСтр1 (2 байта) ..
ДлинаСтр1 (2 байта) Стр1 ДлинаСтр2 (2 байта) Стр2 ...
|
|
|
|
| постоянный участник
|
Пост N: 1333
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.06.10 18:40. Заголовок: Pasha пишет: ДлинаС..
Pasha пишет: цитата: | ДлинаСтр1 (2 байта) Стр1 ДлинаСтр2 (2 байта) Стр2 ... |
| А как искать вхождения строк ? по маске "(xx)" или еще как ?
|
|
|
|
| Администратор
|
Пост N: 1470
Зарегистрирован: 23.05.05
|
|
Отправлено: 02.06.10 20:12. Заголовок: Вхождения каких стро..
Вхождения каких строк куда надо искать ? В этой теме поиск вхождения строк мы еще не обсуждали
|
|
|
|
| постоянный участник
|
Пост N: 1334
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.06.10 20:51. Заголовок: Pasha пишет: Чтение..
Pasha пишет: цитата: | Чтение из строки в массив строк: nPos := 1 while nPos <= len(cStr) nLen := Bin2I(Substr(cStr, nPos, 2)) nPos += 2 AADD(aStr, Substr(cStr, nPos, nLen)) nPos += nLen enddo |
| Я вот про это .....
|
|
|
|
| Администратор
|
Пост N: 1471
Зарегистрирован: 23.05.05
|
|
Отправлено: 02.06.10 21:02. Заголовок: Андрей, ты говоришь ..
Андрей, ты говоришь загадками... Что-то с этим кодом непонятно ? И при чем здесь вхождение строк ?
|
|
|
Ответов - 52
, стр:
1
2
3
All
[только новые]
|
|