Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.09;
Скачать: CL | DM;

Вниз

Что то непонятне с компилятором? Или я неумею программировать?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
4-1173175091
szimin
2007-03-06 12:58
2007.12.09
Глобальные хуки в Висте.


2-1195104416
АндрейК
2007-11-15 08:26
2007.12.09
Пробелом выделить нужные строки в DBGrid


11-1181038471
SergeR
2007-06-05 14:14
2007.12.09
Пожелания по сайту KOLnMCK.ru


1-1189867818
andreil
2007-09-15 18:50
2007.12.09
Преобразовать строку в дробное число


15-1194857221
@!!ex
2007-11-12 11:47
2007.12.09
Шифрование ICQ сообщение.