Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Конвертирование delphi string в javascript string / 25 сообщений из 28, страница 1 из 2
22.07.2020, 14:02
    #39982698
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
В общем, как оказалось, javascript удаляет из строки спец. символы вроде косой черты и т.д.
В обще-то, это касается и JSON, т.к. Delphi код передает с помощью JSON данные во JS-фреймворк. Может в Delphi уже есть что-то готовое, т.к. работа с JSON в Delphi уже давно есть.
...
Рейтинг: 0 / 0
22.07.2020, 14:06
    #39982704
Дегтярев Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
1 JS, наверное, ничего не удаляет
2 наверное, вопрос стоит не в конвертировании, а в форматировании данных как строки исходного кода JS или строки JSON
...
Рейтинг: 0 / 0
22.07.2020, 14:15
    #39982715
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
я просто передаю виндовый путь а в браузере он отображается без слешей
...
Рейтинг: 0 / 0
22.07.2020, 14:21
    #39982717
s62
s62
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
X11,

обратный слэш в javascript используется для "экранирования". Чтобы записать в строке сам обратный слэш, надо перед ним поставить еще один такой. Как в паскале, чтобы одинарную кавычку в строку вставить, тоже две нужно написать.
https://learn.javascript.ru/string
...
Рейтинг: 0 / 0
22.07.2020, 14:23
    #39982718
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
Я это знаю и читал.
Я понимаю, что могу написать свой лисапет для всех специальных HTML/JS-символов.

НО
X11
Может в Delphi уже есть что-то готовое
...
Рейтинг: 0 / 0
22.07.2020, 14:55
    #39982737
s62
s62
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
X11,

не знаю, какая у тебя задача, какие именно символы и куда тебе нужно передавать, но в Дельфи есть вот такое:
http://docwiki.embarcadero.com/Libraries/Sydney/en/System.RegularExpressions.TRegEx.Escape
А в JavaScript есть свои функции/методы для обработки строк, можно ими обрабатывать входящую из Дельфи строку, если скрипт свой.
...
Рейтинг: 0 / 0
22.07.2020, 15:06
    #39982744
s62
s62
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
Но для пути
X11
я просто передаю виндовый путь а в браузере он отображается без слешей

наверное достаточно
Код: pascal
1.
s := StringReplace(s, '\', '\\', [rfReplaceAll]);
...
Рейтинг: 0 / 0
22.07.2020, 15:16
    #39982750
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
Так дело ж не только в разделителе пути. Он же не единственный спец. символ.
...
Рейтинг: 0 / 0
22.07.2020, 15:17
    #39982751
SOFT FOR YOU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
Есть же стандартный парсер JSON в Delphi
...
Рейтинг: 0 / 0
22.07.2020, 15:21
    #39982753
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
Мне не нужно парсить джейсон. Нужно конвертировать строку.

Ок, если там есть такая функция, то как она называется, не подскажите?

А дело может быть и не в JSON, и не в JS, а в HTML, потому что строка в конченом итоге выводится в какой-то визуальный HTML-компонент. Может быть из-за HTML проблема.
...
Рейтинг: 0 / 0
22.07.2020, 15:25
    #39982756
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
X11
я просто передаю виндовый путь а в браузере он отображается без слешей
Давай код.

1. Что передаешь?
2. Как передаешь?
3. Как отображаешь?

Потому что все должно работать и так
...
Рейтинг: 0 / 0
22.07.2020, 15:37
    #39982766
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
Вообще в спеках JSON escape прямо прописан. Если данные корежатся после передачи - значит, энкодер кривой.

Как всегда, решение задачи методом декомпозиции. На каждом этапе "кодировка - передача - прием - раскодировка - отображение" добавить диагностику и смотреть, что за данные идут. Только смотреть средствами без неявных "обработок" спецсимволов, лучше всего в hex редакторе.
...
Рейтинг: 0 / 0
22.07.2020, 15:45
    #39982773
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
_Vasilisk_
Давай код.


ок, вот код (для UniGUI)

Код: 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.
procedure PhotoInfoShow(UnimImage: TUnimImage);
var
  ImgSize: TImgSize;
  txt: string;
begin
  ImgSize.w := UnimImage.Picture.Width;
  ImgSize.h := UnimImage.Picture.Height;
  ImgSize.s := GetFileSize(UnimImage.Hint);

  txt := UnimImage.Hint + constHTMLTagBr +
         ExtractFileName(UnimImage.Hint) + constHTMLTagBr +
         ImgSize.w.ToString + 'x' + ImgSize.h.ToString + constHTMLTagBr +
         FloatToStrF(ImgSize.s / 1024, ffFixed, 8, 2) + ' Kb';


  UnimImage.JSInterface.JSCode(
  '    var sender='#1 + ';' +
  '    if (!sender.htmlTextEl) {' +
  '        sender.htmlTextEl = Ext.DomHelper.append(sender.element.select(''.x-innerhtml'').elements[0], {' +
  '            tag: ''div'',' +
  '            style: ''position:absolute; top:0; width:100%; height:auto; padding:10px; background:rgba(0, 0, 0, 0.3); font-weight:bold; color:white;'',' +
  '            id: sender.id + ''_textEl'',' +
  '            html: sender.htmlText' +
  '        });' +
  '    }' +
  '    sender.htmlTextEl.innerHTML = ' + QuotedStr(txt) + ';');

  UnimImage.Tag := 1;
end;



Проблема может быть в "htmlTextEl"
...
Рейтинг: 0 / 0
22.07.2020, 15:52
    #39982778
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
Uses System.NetEncoding;

THTMLEncoding.HTML.Encode()
...
Рейтинг: 0 / 0
22.07.2020, 15:56
    #39982781
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
rgreat, не помогло

txt := THTMLEncoding.HTML.Encode(txt);
...
Рейтинг: 0 / 0
22.07.2020, 16:00
    #39982784
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
X11
Код: pascal
1.
'    sender.htmlTextEl.innerHTML = ' + QuotedStr(txt) + ';');

Так работать точно не будет.
1. Бекслеши нужно экранировать.
2. Апострофы нужно экранировать, а не удваивать, как это делает QuotedStr
3. Будем считать, что перевода строки txt не содержит

И ты не ответил еще на два вопроса: что передаешь и что отбражается?
...
Рейтинг: 0 / 0
22.07.2020, 16:01
    #39982785
s62
s62
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
X11,

ну всё правильно, javascript формирует innerHTML какого-то элемента html (htmlTextEl). В переменной txt есть незаэкранированные обратные слэши из UnimImage.Hint. Там, судя по
Код: pascal
1.
ExtractFileName(UnimImage.Hint)

- полное имя файла с путём. Эти незаэкранированные слэши не отображаются.
Но разве ещё какие-то спецсимволы в строке txt могут встретиться?

Или это один случай и есть еще другие такого типа, где передается строка из Delphi и могут встретиться спецсимволы и нужно общее решение?
...
Рейтинг: 0 / 0
22.07.2020, 16:01
    #39982786
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
_Vasilisk_, так я об этом и говорю с самого первого поста
...
Рейтинг: 0 / 0
22.07.2020, 16:03
    #39982788
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
s62
Но разве ещё какие-то спецсимволы в строке txt могут встретиться?


пока только символ виндового пути, а что будет в будущем, я не знаю

есть картинка и нужно отобразить о ней всякую инфу: путь, имя, размер. Может быть в будущем ещё что-то из Exif.

Поэтому сейчас пытаюсь решить будущую проблему, чтобы потом не морочиться
...
Рейтинг: 0 / 0
22.07.2020, 16:31
    #39982794
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
В общем так:
Код: pascal
1.
2.
3.
4.
5.
6.
Uses  ExtPascalUtils;
...
...
...

txt := StrToJS(txt);
...
Рейтинг: 0 / 0
22.07.2020, 23:36
    #39982889
Дегтярев Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
txt := UnimImage.Hint + constHTMLTagBr +
         ExtractFileName(UnimImage.Hint) + constHTMLTagBr +
         ImgSize.w.ToString + 'x' + ImgSize.h.ToString + constHTMLTagBr +
         FloatToStrF(ImgSize.s / 1024, ffFixed, 8, 2) + ' Kb';


  UnimImage.JSInterface.JSCode(
  '    var sender='#1 + ';' +
  '    if (!sender.htmlTextEl) {' +
  '        sender.htmlTextEl = Ext.DomHelper.append(sender.element.select(''.x-innerhtml'').elements[0], {' +
  '            tag: ''div'',' +
  '            style: ''position:absolute; top:0; width:100%; height:auto; padding:10px; background:rgba(0, 0, 0, 0.3); font-weight:bold; color:white;'',' +
  '            id: sender.id + ''_textEl'',' +
  '            html: sender.htmlText' +
  '        });' +
  '    }' +
  '    sender.htmlTextEl.innerHTML = ' + QuotedStr(txt) + ';');


нах так жить
...
Рейтинг: 0 / 0
23.07.2020, 08:16
    #39982917
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
Дегтярев Евгений,

не понял...
...
Рейтинг: 0 / 0
24.07.2020, 06:25
    #39983428
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
X11,

Для собирания js кода в дельфи точно ничего нет готового. Заменяй бекслеш на два бекслеша.
...
Рейтинг: 0 / 0
24.07.2020, 08:24
    #39983445
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
crutchmaster,

я уже решил проблему - в uniGUI есть
22171843
...
Рейтинг: 0 / 0
24.07.2020, 09:27
    #39983462
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертирование delphi string в javascript string
X11,

Это что, специально для extJs модуль?? ._О
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Конвертирование delphi string в javascript string / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]