Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FreePascal метод String.Split / 12 сообщений из 12, страница 1 из 1
13.11.2021, 22:52
    #40111788
zedxxx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FreePascal метод String.Split
В Delphi вот такой код не работает:

Код: pascal
1.
2.
3.
4.
5.
var
  VArr: TStringDynArray;
begin
  VArr := '1-2;3-4'.Split('-;');
  ...



т.к. все перегруженные функции требуют на вход массив строк или символов.

В тоже время этот код нормально работает во FreePascal, хотя, судя по сорцам, там тоже нету перегруженной функции, которая принимает на вход просто строку. Как такое может быть?

P. S. В Lazarus нормально продебажить не получается, дебагер не хочет проваливаться внутрь функции Split :(
...
Рейтинг: 0 / 0
13.11.2021, 22:58
    #40111789
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FreePascal метод String.Split
zedxxxКак такое может быть?

Очевидно строковый литерал в FPC совместим (или неявно преобразуется в) array of
char.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.11.2021, 00:43
    #40111802
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FreePascal метод String.Split
а если как-то так заменить?

Код: pascal
1.
2.
3.
4.
5.
function func1(const list: string): boolean;
var
  IdArray: TStringDynArray;
begin
  IdArray := SplitString(list, ',');
...
Рейтинг: 0 / 0
14.11.2021, 16:33
    #40111886
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FreePascal метод String.Split
zedxxx
В Delphi вот такой код не работает:
Логично. В Делфи нет типа TStringDynArray
...
Рейтинг: 0 / 0
14.11.2021, 16:48
    #40111893
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FreePascal метод String.Split
zedxxx
хотя, судя по сорцам, там тоже нету перегруженной функции, которая принимает на вход просто строку. Как такое может быть?

А ты передаёшь не строку, а открытый массив чаров. Передать таким же образом переменную строкового типа не получится, если только явно не указать частичную передачу массива.

_Vasilisk_
В Делфи нет типа TStringDynArray

Давно заглядывал в Delphi?
...
Рейтинг: 0 / 0
14.11.2021, 16:50
    #40111895
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FreePascal метод String.Split
Kazantsev Alexey
Давно заглядывал в Delphi?
Только что. Версия 10.3.1[dcc32 Error] Unit1.pas(462): E2003 Undeclared identifier: 'TStringDynArray'
...
Рейтинг: 0 / 0
14.11.2021, 17:03
    #40111898
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FreePascal метод String.Split
_Vasilisk_,

Ну так открой для себя System.Types.
...
Рейтинг: 0 / 0
14.11.2021, 17:44
    #40111917
zedxxx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FreePascal метод String.Split
На самом деле туда точно так же можно передать и строку. Код скомпилируется, но работать уже как надо не будет. Из-за этого я столкнулся с багом в FPC в SplitString (зарепортил и уже пофиксили в trunk).

Опасная фишка, раз они даже в rtl из-за неё баги делают.
...
Рейтинг: 0 / 0
14.11.2021, 17:48
    #40111920
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FreePascal метод String.Split
zedxxxОпасная фишка, раз они даже в rtl из-за неё баги делают.

Для багов в RTL им не нужен повод.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.11.2021, 17:52
    #40111921
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FreePascal метод String.Split
zedxxx
На самом деле туда точно так же можно передать и строку.

У меня, на девелоперской ветке, компилятор строку принимает только если использовать синтаксис передачи части массива.
...
Рейтинг: 0 / 0
14.11.2021, 18:07
    #40111925
zedxxx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FreePascal метод String.Split
...
Рейтинг: 0 / 0
14.11.2021, 18:34
    #40111930
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FreePascal метод String.Split
zedxxx,

Щьёрт! Что-же у меня сегодня не компилировалось..

Предложил другое решение:
https://gitlab.com/freepascal.org/fpc/source/-/commit/1c7709e45478a49df04b12338765e2b97cff3519#note_732677716
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FreePascal метод String.Split / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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