Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Ошибка при работе со строками в паскале при использовании русского языка  (Прочитано 1960 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн bas202

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Операционная система ubuntu 11.10. Пишу программу на паскале в geany:
var s:string;
begin
s:='космос'; delete(s,4,2); write(s);                                 
end.

Вместо "косс" выводится "кЁмос"
Кажется в ubuntu 11.04 такого не было, кстати и в lubuntu 11.10 также выводится с ошибкой
Никто такого не видел?

Оффлайн Señor_Gaga

  • Забанен
  • Активист
  • *
  • Сообщений: 878
  • Ubuntu 12.04LTS & Linux Mint 13LTS "Maya"
    • Просмотр профиля
Возможно связано с кодировкой строки s:='космос'
Какой компилятор? Есть ли предупреждения при компиляции?

Оффлайн bas202

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
В настройках geany стоит кодировка Юникод (UTF-8)

При компиляции пишет:
   Free Pascal Compiler version 2.4.4-2ubuntu1 [2011/09/27] for i386
   Copyright (c) 1993-2010 by Florian Klaempfl
   Target OS: Linux for i386
   Compiling zad31.pas
   Linking zad31
   /usr/bin/ld: warning: link.res contains output sections; did you forget -T?
   4 lines compiled, 0.0 sec
   Сборка прошла успешно.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
почитай что такое кодировка с переменной длиной символа (utf-8 к таким относится)
используй широкие символы внутри программы и соответсвующие функции для их ввода, вывода и обработки

Оффлайн bas202

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
почитай что такое кодировка с переменной длиной символа (utf-8 к таким относится)
используй широкие символы внутри программы и соответсвующие функции для их ввода, вывода и обработки

почитал, изменений в работе программы не заметил
советы "почитай" означают что проблема не имеет легкого решения?

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Хорошо, я уточню, почитай и постарайся вникнуть =)
Мля.. проблема высосана из пальца просто некоторые не хотят думать и надеются что кто-то даст им красную таблетку и всё заработает.

Оффлайн Señor_Gaga

  • Забанен
  • Активист
  • *
  • Сообщений: 878
  • Ubuntu 12.04LTS & Linux Mint 13LTS "Maya"
    • Просмотр профиля
>> используй широкие символы внутри программы и соответсвующие функции для их ввода, вывода и обработки

Отвечено же.

Оффлайн bas202

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
написал так:
var s:WideString;
begin s:='космос';delete(s,4,2);write(s); end.
Изменений никаких

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Код: (pascal) [Выделить]
procedure Delete ( var Source : string; StartChar : Integer; Count : Integer );

ты уверен что правильно написал? есть delete именно для widestring?

ибо незаметно может работать
Цитировать
При присвоении 'узкой' строке, типа AnsiString, двойной, преобразования могут иметь непредсказуемые результаты. Используйте с осторожностью.

я еще уточню. разберись с матчастью строк как ansi так и wide

Оффлайн bas202

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
>>> ты уверен что правильно написал?
нет, совсем не уверен, но по другому не знаю
раньше в ubuntu 11.04 и 10.10 всё работало без моих знаний в этой области

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля

Оффлайн bas202

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
со временем узнаю, но я думал может кто уже знает
кстати эта ошибка только на моем компьютере? на ваших компьютерах она воспроизводится? программка работает также?

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
=) спасибо мы как-то без паскаля обходимся.
вспоминаю как страшный сон, столько всяких извратов в нем

Оффлайн Señor_Gaga

  • Забанен
  • Активист
  • *
  • Сообщений: 878
  • Ubuntu 12.04LTS & Linux Mint 13LTS "Maya"
    • Просмотр профиля
Читайте документацию по используемой версии паскаля.

Оффлайн bas202

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
=) спасибо мы как-то без паскаля обходимся.
вспоминаю как страшный сон, столько всяких извратов в нем
а что тогда не страшный сон? C++ ?

Пользователь решил продолжить мысль 28 Декабря 2011, 15:46:02:
Читайте документацию по используемой версии паскаля.
с одной стороны это понятно, но с другой мне кажется это связано с ubuntu 11.10, в прежних версиях работало нормально
« Последнее редактирование: 28 Декабря 2011, 15:46:02 от bas202 »

 

Страница сгенерирована за 0.017 секунд. Запросов: 21.