On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 1318
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.06.10 01:49. Заголовок: Беда с функцией AfterATNUM() ....


Делал обработку текстового файла (в конце строки всегда стоит CHR(13)+CHR(10) )

Не могу получить первую строку функцией AfterATNUM() .... Результирующий файл различается от входящего !
Может как нибудь по другому можно ?

Вот примерный текст программы: Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 52 , стр: 1 2 3 All [только новые]


администратор




Пост N: 1693
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.06.10 07:20. Заголовок: Можно так сделать и ..


Можно так сделать и не придумывать велосипед
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

*/
if hb_fuse("user5.txt")#-1
do while !hb_feof()
Ctarget+=hb_freadln()+CHR(13)+CHR(10)
// вот тут можно сразу писать в USER52.TXT , предварительно его открыв в
// другом Hb_fselect()

hb_fskip()
enddo
Hb_fuse()
STRFILE(cTarget,"User52.txt",.F.)
endif
RETURN NIL


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1694
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.06.10 07:24. Заголовок: PS Для Xharbour - L..


PS

Для Xharbour - LibMisc.lib
Для Harbour - Hbmisc.lib

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 172
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 01.06.10 08:00. Заголовок: В Xharbour чтение ..


В Xharbour чтение и разбор текстовых файлов делаю так:

cFileNameTxt:="User5.txt"

IF FILE(cFileNameTxt)
cFileText := TFileRead():New( cFileNameTxt )
cFileText:Open()

WHILE cFileText:MoreToRead()
cLine:= cFileText:ReadLine()
// ваша обработка строки

END WHILE //ENDDO
cFileText:Close()
ENDIF




















<a href=http://www.es.7searchsoft.com/ >programas gratis</a>

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1695
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.06.10 08:12. Заголовок: Andrey пишет: Не мо..


Andrey пишет:

 цитата:
Не могу получить первую строку функцией AfterATNUM()


И нужно было использовать BeforATNUM и тогда 1 строка не потеряется и учитывать 4 параметр
в этой функции

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1319
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.06.10 10:38. Заголовок: Спасибо БОЛЬШОЕ Vlad..


Спасибо БОЛЬШОЕ Vlad04 и Dima !!!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1320
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.06.10 11:19. Заголовок: Dima пишет: И нужно..


Dima пишет:

 цитата:
И нужно было использовать BeforATNUM и тогда 1 строка не потеряется и учитывать 4 параметр
в этой функции



Что-то не получается и с ней !!!
Я могу конечно обойтись и как вы предложили и как у меня уже есть сделанные функции, но хотелось бы разобраться с этими НЕПОНЯТНЫМИ функциями. Уж больно исходник маленьким получается, без доп.библиотек !

Вот исправленный текст Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1464
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.06.10 11:32. Заголовок: Намного эффективнее ..


Намного эффективнее будет использование функций TokenInit - TokenNext - TokenEnd:

Local cTokenEnv := ''
Local cTok := Chr(13) + Chr(10)

TokenInit(@c, cTok,, @cTokenEnv)
while ! TokenEnd(@cTokenEnv)
cLex := TokenNext(c,, @cTokenEnv))
enddo

В случае AtNum - BeforeAtNum строка каждый раз в цикле просматривается с самого начала, что крайне неоптимально, а TokenNext "ползет" по строке, выбирая следующую лексему


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1321
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.06.10 11:46. Заголовок: Pasha пишет: TokenI..


Pasha пишет:

 цитата:
TokenInit(@c, cTok,, @cTokenEnv)



Да действительно, это оптимальней и лучше для больших файлов !!!
Спасибо БОЛЬШОЕ Паша !!!

Вот рабочая программа Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 11
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 01.06.10 12:02. Заголовок: Пример из хелпа xHa..


Пример из хелпа xHarbour функции TokenInit()


// This example does the same, but takes advantage of local tokenizer
// environments. The performance is about 20% better compared to the
// global tokenizer environment, since SaveToken() and RestToken() are
// not needed.

#define CRLF Chr(13)+Chr(10)

PROCEDURE Main
LOCAL cText := MemoRead( "Textfile.txt" )
LOCAL cToken, cTokenEnv
LOCAL aLines := {}
LOCAL nLines := 0
LOCAL nWords := 0

// initialize local tokenizer environment
TokenInit( @cText, CRLF, 2, @cTokenEnv )

DO WHILE .NOT. TokenEnd( @cTokenEnv )
cToken := TokenNext( @cText, , @cTokenEnv )

IF cToken == ""
// one blank space is an empty line for AChoice()
cToken := " "
ENDIF

nLines ++
nWords += WordCount( @cToken )

AAdd( aLines, cToken )
ENDDO

// display the text file
AChoice( ,,,, aLines )

CLS
? "Line count:", nLines
? "Word count:", nWords
RETURN


FUNCTION WordCount( cText )
LOCAL cTokenEnv
LOCAL nWords := 0

TokenInit( @cText, " ,.!?", @cTokenEnv )

DO WHILE .NOT. TokenEnd( @cTokenEnv )
TokenNext( @cText, , @cTokenEnv )
nWords ++
ENDDO

RETURN nWords





Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1697
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.06.10 12:16. Заголовок: Andrey У тебя вроде..


Andrey
У тебя вроде ж должен быть xHarbour Language Reference Guide , посеял что ли ? :)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1323
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.06.10 13:19. Заголовок: Dima пишет: У тебя ..


Dima пишет:

 цитата:
У тебя вроде ж должен быть xHarbour Language Reference Guide


Да есть он у меня, просто ночью делал и начал как в клипере с NUMAT() и на нем зациклился.
А с TOKEN() у меня всегда непонятка была. Не люблю я его.
Спасибо Паша направил на путь истинный... А уж после него и сам в Хелпе обнаружил...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1324
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.06.10 13:28. Заголовок: Теперь другая фигня ..


Теперь другая фигня !
Хочу в лог-файл добавлять данные, но чтоб пользователь не мог видеть и править их.

Беру файл, построчно шифрую и записываю в другой.
Потом проверяю: считываю шифрованный файл, построчно разбираю, дешифрую строку и записываю в другой файл.
Не работает ! Остаются куски шифрованные !

Вот текст программы: Скрытый текст


Кто поможет ?
Может не надо использовать Chr(13) + Chr(10), а делать свои метки ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1698
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.06.10 13:47. Заголовок: Проверил на простом ..


Проверил на простом USER5.TXT
Cодержимое
111
222
333
444

После отработки программы содержимое файла User5DeCrypt.txt == User5.txt

PS
В User5crypt.txt все chr(13)+chr(10) на своих местах

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1325
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.06.10 14:35. Заголовок: Dima пишет: Провери..


Dima пишет:

 цитата:
Проверил на простом USER5.TXT


Это мало. Сделай из DBF-файла (записей 6) CVS-файл, с разделителем "," ! Можно через DBU.EXE


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1699
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.06.10 14:44. Заголовок: Сделал , все в норме..


Сделал , все в норме.
Дай свой текст USER5.TXT

PS
Глянь свой User5.txt в 16-ричном виде (можно через Far) , может у тебя
где то chr(13) потерялся в конце какой то строки

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1326
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.06.10 15:39. Заголовок: Dima пишет: Дай сво..


Dima пишет:

 цитата:
Дай свой текст USER5.TXT



Даю. Заодно и программу на хХарборе 1.0.0
http://files.mail.ru/IMUKCV


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1700
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.06.10 16:02. Заголовок: Andrey LOL Забей в..


Andrey
LOL

Забей в файлике User5.txt всего одну строчечку и сделай после нее перевод строки , прогу запусти
и глянь результат в User5DeCrypt.txt

Строка такая
w:\fond9\abonent4.exe","

или вот так ;)
w:\fond9","


или так
w:\fond9"

ЗЫ
Harbour 2.0.0 так же сработал (я о результате в User5DeCrypt.txt)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1327
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.06.10 16:22. Заголовок: Блин, фигня получает..


Блин, фигня получается....
Файл считывается правильно, а дальше не работает:
TokenInit(@cSource, cTok,, @cTokenEnv)
DO while ! TokenEnd(@cTokenEnv)
cLex := TokenNext(cSource,, @cTokenEnv)
? "Stroka:",nI++
?? ":",cLex
// ------------- обработка строки ----------------
cLex2 := HB_DeCrypt( cLex, cPassWord )
// ? cLex2, LEN(cLex2)
cTarget := cTarget + cLex2 + cTok
enddo


Т.е. TokenNext(cSource,, @cTokenEnv) выдает неправильную строку !!!

А что делать то ? Как исправить данную ситуацию ?

Может не надо использовать Chr(13) + Chr(10), а делать свои метки ?



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1701
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.06.10 16:36. Заголовок: Crypt , Decrypt по т..


Crypt , Decrypt по таким строкам работает верно (проверил)
Возможно где то косяк в твоей функции (я особо не вникал)
Хотя довольно странно
Так не работает w:\fond9"
А так работает :\fond9"
В обоих случаях в конце строки есть перевод строки.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1703
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.06.10 16:56. Заголовок: Andrey пишет: А с T..


Andrey пишет:

 цитата:
А с TOKEN() у меня всегда непонятка была. Не люблю я его.


Пробни то что то Vlad04 предложил или я.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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 !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1704
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.06.10 17:07. Заголовок: Содержимое user5.txt..


Содержимое user5.txt

12345
00000
11111
w:\fond9"
22222
absder
проверка

В 4 строке Фсё сломается , хотя после нее (и до нее) все верно.......
Разделители у тебя указаны явно , ХЗ в чем дело.

Перевод строки везде есть


ЗЫ
Результат


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1329
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.06.10 18:35. Заголовок: Если заменить cTok :..


Если заменить cTok := "{}" заместо Chr(13) + Chr(10) тоже самое происходит !
Видать все таки дело в TokenNext(cSource,, @cTokenEnv) !

Хотя если убрать " - то все нормально проходит !!!
Все дело в кавычках " !!!

Надо писать разработчикам TokenNext ! Кто сможет ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1705
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.06.10 19:04. Заголовок: Andrey пишет: Надо ..


Andrey пишет:

 цитата:
Надо писать разработчикам TokenNext ! Кто сможет ?


Могу ошибаться , но кажется Павел уже занимается этим.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1330
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.06.10 19:27. Заголовок: Переделал программу ..


Переделал программу на твою функцию.
С простой строчкой нормально, с CVS-строкой содержащие кавычки (") - опять косяки !!!

Вот пример в архиве
---------- Андрей не надо выкладывать мое мыло ладно ? Ссылку потер

Утилита dub.exe - сравнение 2х-файлов. Где бы такую Виндовую взять ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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
А не парные кавычки у тебя есть по ходу , только что заметил.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1465
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.06.10 20:30. Заголовок: Проблема заключается..


Проблема заключается не в token в разных вариациях, а в HB_Crypt. В результате ее работы в зашифрованную строку случайным образом попадают коды #13#10, которые затем и портят всю малину

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1707
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.06.10 20:36. Заголовок: Pasha Можешь на при..


Pasha
Можешь на примере показать (если это реально) ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост 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 до криптоалгоритма не дотягивает) может содержать этот разделитель, что в дальнейшем исказит дешифровку.
Андрею можно посоветовать сбрасывать лог не в текстовый файл, а в дбф с мемо-полем. Такой алгоритм будет работать


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1709
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.06.10 21:30. Заголовок: Pasha То есть функц..


Pasha
То есть функцией hb_crypt пользоваться не следует , так как результат может быть не предсказуем...
Так ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1467
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.06.10 21:50. Заголовок: Нет конечно. Результ..


Нет конечно. Результатом этой функции является зашифрованная строка, содержажая коды от 0 до 255 в любой последовательности. При этом нельзя использовать никакой разделитель строк, так как этот разделитель, состоящий из одного или более символов, может оказаться в зашифрованной строке. Ей можно пользоваться, когда длина строки содержится вне строки. К примеру, если использовать такой формат: 2-4 байта - длина строки, строка, следующая строка с префиксом - ее длиной, и т.д.
Или файл с мемо-полем, что тоже самое.


Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1331
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.06.10 22:15. Заголовок: Pasha пишет: Или фа..


Pasha пишет:

 цитата:
Или файл с мемо-полем, что тоже самое.


Не хочу заморачиваться с dbf !

Pasha пишет:

 цитата:
К примеру, если использовать такой формат: 2-4 байта - длина строки, строка, следующая строка с префиксом - ее длиной, и т.д.


Вот это интересней, только не пойму как считывать строку ? Как будет выглядеть файл (2-3 строчки) ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост 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

внутрь цикла можно вставить шифровку/дешифровку


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1332
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.06.10 23:03. Заголовок: Нет, ни как не въеду..


Нет, ни как не въеду !

Дай пожалуйста образец файла, как он будет выглядеть ? Черкани 3 строчки файла....

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1469
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 02.06.10 08:08. Заголовок: ДлинаСтр1 (2 байта) ..


ДлинаСтр1 (2 байта) Стр1 ДлинаСтр2 (2 байта) Стр2 ...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1333
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.06.10 18:40. Заголовок: Pasha пишет: ДлинаС..


Pasha пишет:

 цитата:
ДлинаСтр1 (2 байта) Стр1 ДлинаСтр2 (2 байта) Стр2 ...


А как искать вхождения строк ?
по маске "(xx)" или еще как ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1470
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 02.06.10 20:12. Заголовок: Вхождения каких стро..


Вхождения каких строк куда надо искать ? В этой теме поиск вхождения строк мы еще не обсуждали

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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


Я вот про это .....

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1471
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 02.06.10 21:02. Заголовок: Андрей, ты говоришь ..


Андрей, ты говоришь загадками... Что-то с этим кодом непонятно ? И при чем здесь вхождение строк ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1335
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.06.10 23:45. Заголовок: Ладно, буду делать р..


Ладно, буду делать рабочий тест. А там поглядим....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост 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;

Я в Делфях так делаю

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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 ]".

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1712
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.06.10 10:12. Заголовок: gustow Поправил ...


gustow
Поправил .

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1713
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.06.10 10:23. Заголовок: Andrey Не пробовал ..


Andrey
Не пробовал вместо HB_CRYPT , HB_UUEncode (HB_UUDecode) ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1337
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.06.10 13:22. Заголовок: Dima пишет: Не проб..


Dima пишет:

 цитата:
Не пробовал вместо HB_CRYPT , HB_UUEncode (HB_UUDecode) ?



Нет, не пробовал. Посмотрю конечно. Спасибо.
Я понял, что Паша мне дал (ну заклинился на другом), сейчас это делаю ! Дошло наконец-то....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1339
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.06.10 16:55. Заголовок: ВОТ засада, то какая..


ВОТ засада, то какая !
Если удалить хоть один байт с ТАКОГО файла (что Паша предложил), то раскодировать этот файл больше нельзя !!!

И нафига такие заморочки с кодированием ?

Есть ли другие способы ?
Может заместо CHR(13)+CHR(10) взять разделитель типа [МояМетка] ?
Вероятность того, что при шифрации строк может получиться такая комбинация - равна 0 !!!




Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1719
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.06.10 16:59. Заголовок: Andrey пишет: Есть ..


Andrey пишет:

 цитата:
Есть ли другие способы ?


я же предлагал (на твоем примере не проверял).

Dima пишет:

 цитата:
Не пробовал вместо HB_CRYPT , HB_UUEncode (HB_UUDecode) ?




Спасибо: 1 
ПрофильЦитата Ответить
Администратор




Пост N: 1474
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 04.06.10 18:48. Заголовок: Andrey пишет: ВОТ з..


Andrey пишет:

 цитата:
ВОТ засада, то какая !
Если удалить хоть один байт с ТАКОГО файла (что Паша предложил), то раскодировать этот файл больше нельзя !!!

И нафига такие заморочки с кодированием ?

Есть ли другие способы ?
Может заместо CHR(13)+CHR(10) взять разделитель типа [МояМетка] ?
Вероятность того, что при шифрации строк может получиться такая комбинация - равна 0 !!!



Чем больше символов содержит разделитель, тем меньше вероятность того, что он случайно будет содержаться в результате криптофункции. Так что это тоже вариант, хоть и не железный. А вариант с длиной строки - железобетонный Ж)
А насчет удаления одного байта: надо тогда сформулировать, в чем заключается задача. Пользователь не должен видеть логи, но может захотеть их "испортить" ? Испортить файл с длиной строки и шифрованной строкой действительно можно удалением одного байта. Если шкодник захочет испортить файл с разделителем - он может стереть его содержимое. Помешать ему нельзя.
Можно лишь фиксировать сам факт вмешательства - например, всегда дописывать в конец файла значение хэш, или, на худой конец, crc32


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1721
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.06.10 19:58. Заголовок: Pasha пишет: А насч..


Pasha пишет:

 цитата:
А насчет удаления одного байта: надо тогда сформулировать, в чем заключается задача


+1

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1342
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.06.10 20:23. Заголовок: Задача: Хочу в лог-ф..


Задача:
Хочу в лог-файл добавлять данные, но чтоб пользователь не мог видеть и править их.
Вариант удаления файла не рассматриваю, не важен пока.
Если кто-то попортит файл, то хотелось бы вытащить оставшиеся данные.
Т.е. шифрация всего файл-лога тоже не прокатывает, т.к. урезание нескольких байтов приведет к невозможности расшифровки всего остального файла.

Вот и вся задача.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1722
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.06.10 20:37. Заголовок: Andrey Ну прячь его..


Andrey
Ну прячь его где то подальше. Имя файлу придумай такое что бы ни ХТО не догадался ;)
Как вариант можно лог в Zip архив запихать с паролем , правда тут придется подумать как лучше это сделать.
Испортить зловред может ведь не только лог файл но и базу...


PS
Однако вумные юзеры у тебя.

Спасибо: 1 
ПрофильЦитата Ответить
Ответов - 52 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 31
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет