Форум: "Начинающим";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];
ВнизЧто то непонятне с компилятором? Или я неумею программировать? Найти похожие ветки
← →
Brave (2007-11-14 06:27) [0]У меня стоит Delphi 7 Enterprise, OS Windows XP SP2.
Такая ситуация:
Procedure TestBags;
Var
s:string[20];
Temp:String[20];
i:integer;
begin
s:="Ìó test";
For i:=0 to Length(s) do
Begin
Temp:=Temp+s[i];
ShowMessage(Temp);
End;
end;
Почемуто старока не записываеться в переменную Temp посимвольно из s.
Если сделать так:Temp:=s[i]+Temp;
То в Temp все записывается только наоборот, правдо первый символ в переменной почемуто квадрат.
Я в шоке от такого поведения компилятора.Программирую уже 3 года - первый раз вижу такое! Кто нибудь сталкивался? Как исправить или обойти?
← →
Brave (2007-11-14 06:32) [1]Скомпилировал этот код на другой машине: Delphi6 Trial. OS Windows 2000 SP4.
Все нормально работает как и должно, но вопрос еще в силе. Как мне исправить глюк на 7-ом Delphi?
← →
Igor Zorkov © (2007-11-14 06:46) [2]
Procedure TestBags;
Var
s:string;
Temp:String;
i:integer;
begin
s:="to test";
i:= 0;
For i:=1 to Length(s) do
Begin
Temp:=s[i];
ShowMessage(Temp);
End;
end;
← →
MBo © (2007-11-14 06:46) [3]>Программирую уже 3 года - первый раз вижу такое
Даже 3 года назад символы строки индексировались с 1, а не с нуля
всю строку скопировать можно обычным присвоением temp := s;
← →
Brave (2007-11-14 06:54) [4]
> Даже 3 года назад символы строки индексировались с 1, а
> не с нуля
> всю строку скопировать можно обычным присвоением temp :=
> s;
>
Ой, с 0 ошибочка вышла не заметил. С этой проблемой я столкнулся как начал писать парсер, а это кусочек неработающего парсера.
Вообщем непонятный глюк, скорее всего OS, хоть и лицензия.
← →
ЮЮ © (2007-11-14 09:20) [5]
> Вообщем непонятный глюк, скорее всего OS, хоть и лицензия.
Это глюк в ДНК, однако.
Чего тут непонятно? В s[0] лежит длина символьной строки, а не первый символ, и для коротких строк получаем неотображаемый спецсимвол, изображаемый чаще всего квадратиком.
← →
Jeer © (2007-11-14 09:44) [6]Как любит млад валить все проблемы на окружающий мир не замечая главную проблему - он сам.
> Или я неумею программировать
Разумеется.
> Программирую уже 3 года
Интересно, если не разобраться с short string стоило минимум 3 года, то когда же
наступит удовлетворительное овладение инструментом ?
К пенсии, возможно.
← →
icWasya © (2007-11-14 09:44) [7]А если перед циклом написать Temp:="";???
← →
DrPass © (2007-11-14 10:28) [8]
> icWasya © (14.11.07 09:44) [7]
> А если перед циклом написать Temp:="";???
...то ничего не изменится. Поскольку строки и динамические массивы в Delphi являются управляемыми типами данных, и в отличии от простых типов всегда неявно инициализируются пустыми значениями
← →
Anatoly Podgoretsky © (2007-11-14 10:29) [9]> Jeer (14.11.2007 09:44:06) [6]
Вообще то и пенсия не поможет.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.045 c