Автор | Сообщение |
|
| постоянный участник
|
Пост 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: 1335
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.06.10 23:45. Заголовок: Ладно, буду делать р..
Ладно, буду делать рабочий тест. А там поглядим....
|
|
|
|
| постоянный участник
|
Пост N: 173
Зарегистрирован: 13.10.05
|
|
Отправлено: 03.06.10 20:54. Заголовок: Еще вариант. Зашифро..
Еще вариант. Зашифрованный текст ( в данном случае разборка на строки не нужна) кодируем типа как почтовые программы. Или в цифры, как ниже: ( код на Паскале) function Koder(s: string): string; var i: integer; t: string; begin for i:=1 to Length(s) do begin t:=t+inttostr((ord(s[ i ])*2-100)*3)+' '; end; Result:=t; end; //****************************************************************** function Dekoder(s: string): string; var i,a: integer; t,z: string; begin z:=' '; a:=0; for i:=1 to Length(s) do begin if s[ i ]<>' ' then z:=z+s[ i ] else begin a:=strtoint(z); a:=round((a/3+100)/2); t:=t+chr(a); z:=' '; a:=0; end; end; Result:=t; end; Я в Делфях так делаю
|
|
|
|
| постоянный участник
|
Пост N: 189
Зарегистрирован: 06.02.07
|
|
Отправлено: 04.06.10 08:42. Заголовок: Vlad04 пишет: t:=t+..
Vlad04 пишет: цитата: | t:=t+inttostr((ord(s)*2-100)*3)+' '; |
| Влад, у тебя там, видимо, "ord(s[ i ])*2..." должно быть (судя по тому, что начиная со скобки после "s" в посте все идет курсивом). Обычная тут (в постах форума) ошибка (и у меня бывали) при наличии в коде работы с элементами массивов, где параметр цикла "i" (форумный движок воспринимает такое сочетание как тэг начала курсива)... Надо просто внутри "[ ]" ставить в начале и конце пробелы, тогда в посте все нормально выглядит (да и "предпросмотр" - вещь полезная :) особенно когда сюда копипастить кусок кода). Извиняюсь за "мелочные придирки" :) - просто иногда тяжело в большом куске кода бывает разобраться, просто скопипастив его из поста ("и чё оно не работает??.."), где потерялось "[ i ]".
|
|
|
|
| |
Пост N: 1712
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.06.10 10:12. Заголовок: gustow Поправил ...
gustow Поправил .
|
|
|
|
| |
Пост N: 1713
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.06.10 10:23. Заголовок: Andrey Не пробовал ..
Andrey Не пробовал вместо HB_CRYPT , HB_UUEncode (HB_UUDecode) ?
|
|
|
|
| постоянный участник
|
Пост N: 1337
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.06.10 13:22. Заголовок: Dima пишет: Не проб..
Dima пишет: цитата: | Не пробовал вместо HB_CRYPT , HB_UUEncode (HB_UUDecode) ? |
| Нет, не пробовал. Посмотрю конечно. Спасибо. Я понял, что Паша мне дал (ну заклинился на другом), сейчас это делаю ! Дошло наконец-то....
|
|
|
|
| постоянный участник
|
Пост N: 1339
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.06.10 16:55. Заголовок: ВОТ засада, то какая..
ВОТ засада, то какая ! Если удалить хоть один байт с ТАКОГО файла (что Паша предложил), то раскодировать этот файл больше нельзя !!! И нафига такие заморочки с кодированием ? Есть ли другие способы ? Может заместо CHR(13)+CHR(10) взять разделитель типа [МояМетка] ? Вероятность того, что при шифрации строк может получиться такая комбинация - равна 0 !!!
|
|
|
|
| |
Пост N: 1719
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.06.10 16:59. Заголовок: Andrey пишет: Есть ..
Andrey пишет: я же предлагал (на твоем примере не проверял). Dima пишет: цитата: | Не пробовал вместо HB_CRYPT , HB_UUEncode (HB_UUDecode) ? |
|
|
|
|
|
| Администратор
|
Пост N: 1474
Зарегистрирован: 23.05.05
|
|
Отправлено: 04.06.10 18:48. Заголовок: Andrey пишет: ВОТ з..
Andrey пишет: цитата: | ВОТ засада, то какая ! Если удалить хоть один байт с ТАКОГО файла (что Паша предложил), то раскодировать этот файл больше нельзя !!! И нафига такие заморочки с кодированием ? Есть ли другие способы ? Может заместо CHR(13)+CHR(10) взять разделитель типа [МояМетка] ? Вероятность того, что при шифрации строк может получиться такая комбинация - равна 0 !!! |
| Чем больше символов содержит разделитель, тем меньше вероятность того, что он случайно будет содержаться в результате криптофункции. Так что это тоже вариант, хоть и не железный. А вариант с длиной строки - железобетонный Ж) А насчет удаления одного байта: надо тогда сформулировать, в чем заключается задача. Пользователь не должен видеть логи, но может захотеть их "испортить" ? Испортить файл с длиной строки и шифрованной строкой действительно можно удалением одного байта. Если шкодник захочет испортить файл с разделителем - он может стереть его содержимое. Помешать ему нельзя. Можно лишь фиксировать сам факт вмешательства - например, всегда дописывать в конец файла значение хэш, или, на худой конец, crc32
|
|
|
|
| |
Пост N: 1721
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.06.10 19:58. Заголовок: Pasha пишет: А насч..
Pasha пишет: цитата: | А насчет удаления одного байта: надо тогда сформулировать, в чем заключается задача |
| +1
|
|
|
|
| постоянный участник
|
Пост N: 1342
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.06.10 20:23. Заголовок: Задача: Хочу в лог-ф..
Задача: Хочу в лог-файл добавлять данные, но чтоб пользователь не мог видеть и править их. Вариант удаления файла не рассматриваю, не важен пока. Если кто-то попортит файл, то хотелось бы вытащить оставшиеся данные. Т.е. шифрация всего файл-лога тоже не прокатывает, т.к. урезание нескольких байтов приведет к невозможности расшифровки всего остального файла. Вот и вся задача.
|
|
|
|
|
| |
Пост N: 1722
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.06.10 20:37. Заголовок: Andrey Ну прячь его..
Andrey Ну прячь его где то подальше. Имя файлу придумай такое что бы ни ХТО не догадался ;) Как вариант можно лог в Zip архив запихать с паролем , правда тут придется подумать как лучше это сделать. Испортить зловред может ведь не только лог файл но и базу... PS Однако вумные юзеры у тебя.
|
|
|
Ответов - 52
, стр:
1
2
3
All
[только новые]
|
|