powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FreePascal метод String.Split
12 сообщений из 12, страница 1 из 1
FreePascal метод String.Split
    #40111788
zedxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В Delphi вот такой код не работает:

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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


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