![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
тут пришлось использовать сторонние готовые dbf-файлы
так там есть каталог с большим количеством jpg-файлов с именами вида "201103041234.jpg" а соответствующие записи в базе (поле Строка 7) в виде "$bPk>]B" я не пойму, что это за преобразование такое, и как получить из "$bPk>]B" конкретное название "201103041234.jpg" |
|
#2
|
|||
|
|||
|
кое как нашел в ReFоxe, что это 142-ричное преобразование
теперь пока не могу въехать) какая функция и есть ли такая в delphi: CHRTRAN (Foxpro) Синтаксис: CHRTRAN(cSearchedExpression, cSearchExpression, cReplacementExpression) Параметры: cSearchedExpression Задает выражение, в котором функция CHRTRAN( ) будет заменять символы. cSearchExpression Задает выражение, содержащее символы, которые CHRTRAN( ) будет искать в выражении cSearchedExpression. cReplacementExpression Задает выражение, содержащее символы замены. Если какой-либо символ из выражения cSearchExpression найден в выражении cSearchedExpression, то этот символ в cSearchedExpression замещается символом из выражения cReplacementExpression, находящимся на той же позиции в cReplacementExpression, что и соответствующий символ в выражении cSearchExpression. Если в выражении cReplacementExpression меньше символов, чем в cSearchExpression, лишние символы выражения cSearchExpression удаляются из cSearchedExpression. Если в cReplacementExpression больше символов, чем в cSearchExpression, эти лишние символы выражения cReplacementExpression игнорируются. |
|
#3
|
|||
|
|||
|
как переписать в delphi ?
codedfilename = "$b8=R--" filename = "" sourcedir = "C:\" Form1.label1.caption = STR(cton(codedfilename, 142, 34), 14) filename = STR(cton(codedfilename, 142, 34), 14) Form1.label2.caption = ADDBS(sourcedir)+ADDBS(LEFT(filename, 7))+filename+'.jpg' FUNCTION cton PARAMETER string, p, shift PRIVATE k, nresult nresult = 0 string = CHRTRAN(string, CHR(33), '') FOR k = 1 TO LEN(string) nresult = nresult*p+ASC(SUBSTR(string, k, 1))-shift ENDFOR RETURN nresult ENDFUNC |
|
#4
|
||||
|
||||
|
Используй StringReplace.
|
|
#5
|
|||
|
|||
|
Использовал)
что-то не получается foxpro зарустил, вывод 20100921242669 а delphi 474297389 что я делаю не правильно? Код:
function cton (s:string;p,shift:integer):integer;
var
k,j:integer;
c:string;
begin
result:=0;
s:=StringReplace(s,chr(33),'',[rfReplaceAll]);
for k:=1 to Length(s) do
begin
c:=copy(s,k,1);
j:=ord(c[1]);
result:=result*p+j-shift;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
codedfilename:string;
begin
codedfilename:='$b8=R--';
showMessage(inttostr(cton(codedfilename,142,34)));
end;Последний раз редактировалось RinatKzn, 26.01.2012 в 09:49. |
|
#6
|
|||
|
|||
|
вопрос закрыт)
|