powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Lazarus
25 сообщений из 314, страница 6 из 13
Lazarus
    #39878052
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докне обижай зря человека. ИМХО, иногда воркэраунд целесообразнее, чем замена свечей на работающем двигателе.
От преумножения говнокода целесообразнее не становится, а ведь кому-то в нем еще и ковыряться
...
Рейтинг: 0 / 0
Lazarus
    #39878069
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2,

повторюсь: строки нормальные станут - говнокод выкину. а так то как быстрое решение работает. были бы нормальные строки, проблемы бы вообще не было. уже, видно, что и в лазаре (fpc) наконец осознали и правят. и, да, ковырять больше кроме меня этот кусок некому, можешь не беспокоиться.
...
Рейтинг: 0 / 0
Lazarus
    #39878174
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonстроки нормальные станут - говнокод выкину. а так то как быстрое решение работает. были бы нормальные строки, проблемы бы вообще не было.
Строки и так нормальные... Единый код:

Delphi 10.3:


Lazarus 2.1 (trunk) {$mode delphiunicode}:


Lazarus 2.1 (trunk) {$mode delphi}:
...
Рейтинг: 0 / 0
Lazarus
    #39878293
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наконец пошел код, а не голословные набросы на вентилятор. у меня так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
procedure TForm6.Button1Click(Sender: TObject);
 function CopyLim(const s: string; StrBeg, StrEnd: integer): string;
 begin
  Result := Copy(s, StrBeg, StrEnd - StrBeg + 1);
 end;

 function NameFormat(const s: string): string;
 var
  Pos1, Pos2: integer;
 begin
  Pos1 := Pos(' ', s);
  Pos2 := PosEx(' ', s, Pos1 + 1);
  Result := CopyLim(s, 1, Pos1 + 1) + '.' + CopyLim(s, Pos2 + 1, Pos2 + 1) + '.';
 end;

var
 s: string;
begin
 s := 'тест тест тест';
 s := NameFormat(s);
 ShowMessage(s);
end;



Ставлю бряк перед ShowMessage
Win/Delphi показывает
...
Рейтинг: 0 / 0
Lazarus
    #39878295
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лазарь/Убунта:
...
Рейтинг: 0 / 0
Lazarus
    #39878296
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
финально на винде все ок:

[Window Title]
Project7

[Content]
тест т.т.

[OK]

на убунте сообщения не видно
...
Рейтинг: 0 / 0
Lazarus
    #39878299
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в delphiunicode - все ок на убунте, как и ожидалось ждем этот режим дефолтно
...
Рейтинг: 0 / 0
Lazarus
    #39878303
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из наблюдений по поводу delphiunicode. большая часть всех строчных функций дефолтно несовместима с delphiunicode режимом. ладно бы просто api, хотя и оно все несовместимо.
что бы далеко не ходить - ShowMessage:
unit1.pas(53,15) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
...
Рейтинг: 0 / 0
Lazarus
    #39878330
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon,

Говнокод из палаты мер и весов работать и не должен. Если ты закладываешься на то, что символ юникода уместится в одну кодовую позицию строки - ты огребаешь. C utf-8 или utf-16 - не имеет значения (с utf-16 тебе просто везёт больше, т.к. он закрывает весь BMP. Будут там суррогаты, и эти строки для тебя окажутся "неправильными").

makhaonunit1.pas(53,15) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
Где тут проблема? На линуксе дефолтная кодовая страница utf-8, т.ч. приведение UnicodeString к AnsiString ни к чему ужасному не приведёт.
...
Рейтинг: 0 / 0
Lazarus
    #39878331
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexeyт.к. он закрывает весь BMP
т.к. его одиночные кодовые позиции закрывают весь BMP.
...
Рейтинг: 0 / 0
Lazarus
    #39878338
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon,
+1

Я тоже пока не понимаю оптимизма про юникод. Все utf8, все вручную с явным приведением типов
...
Рейтинг: 0 / 0
Lazarus
    #39878349
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для своих границ применения этих строк и кода достаточно
...
Рейтинг: 0 / 0
Lazarus
    #39878351
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторГде тут проблема? На линуксе дефолтная кодовая страница utf-8, т.ч. приведение UnicodeString к AnsiString ни к чему ужасному не приведёт.
то есть - работа с кодовыми позициями utf16 это говнокод, а куча варнингов по коду - это все отлично? ясно-понятно.
...
Рейтинг: 0 / 0
Lazarus
    #39878379
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonа куча варнингов по коду - это все отлично? ясно-понятно.
Компилятор хочет от тебя явного приведения типа - чтобы убедиться, что ты знаешь, что делаешь.
...
Рейтинг: 0 / 0
Lazarus
    #39878437
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonавторГде тут проблема? На линуксе дефолтная кодовая страница utf-8, т.ч. приведение UnicodeString к AnsiString ни к чему ужасному не приведёт.
то есть - работа с кодовыми позициями utf16 это говнокод, а куча варнингов по коду - это все отлично? ясно-понятно.
А я не смотрю на ворнинги. Что на них смотреть. Компиляции не мешают.
То одни, то другие. Со времён Delphi 3 много кода, что-то поменялось, стало "деприкатет".
...
Рейтинг: 0 / 0
Lazarus
    #39878451
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёА я не смотрю на ворнинги. Что на них смотреть. Компиляции не мешают.Я бы за это как минимум лишал премии.
...
Рейтинг: 0 / 0
Lazarus
    #39878458
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatёёёёёА я не смотрю на ворнинги. Что на них смотреть. Компиляции не мешают.Я бы за это как минимум лишал премии.
Да ну. У нас премии на результат и сроки, а не за красоту кода.
...
Рейтинг: 0 / 0
Lazarus
    #39878472
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

Хуяк хуяк и в продакшн! (с) ;)
...
Рейтинг: 0 / 0
Lazarus
    #39878475
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

именно.
...
Рейтинг: 0 / 0
Lazarus
    #39878483
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отличные последствия того что RTL живет в UTF8:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
function AnsiUpperCase(Text: string): string;
begin
  Result:=UTF8Decode(SysUtils.AnsiLowerCase(UTF8Encode(Text)));
end;

function AnsiLowerCase(Text: string): string;
begin
  Result:=UTF8Decode(SysUtils.AnsiLowerCase(UTF8Encode(Text)));
end;
...
Рейтинг: 0 / 0
Lazarus
    #39878484
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс. AnsiUpperCase в AnsiUpperCase, конечно.
...
Рейтинг: 0 / 0
Lazarus
    #39878511
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

Зачем ты это написал???
...
Рейтинг: 0 / 0
Lazarus
    #39878514
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey,

Потому что:
Код: pascal
1.
Result:=AnsiLowerCase(Result);   // Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
...
Рейтинг: 0 / 0
Lazarus
    #39878515
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И да, действительно "даталосс".
...
Рейтинг: 0 / 0
Lazarus
    #39878518
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatИ да, действительно "даталосс
Весь код покажи, и что именно теряется.
...
Рейтинг: 0 / 0
25 сообщений из 314, страница 6 из 13
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Lazarus
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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