Главная страница
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.023 c
15-1194854187
Me
2007-11-12 10:56
2007.12.09
Новый винт


6-1175397157
-=Germe$=-
2007-04-01 07:12
2007.12.09
SMTP сервер.


2-1194838802
d@nger
2007-11-12 06:40
2007.12.09
Jpeg и дата съемки


15-1194559339
Pacific
2007-11-09 01:02
2007.12.09
Функции


2-1194876354
hahol_64_rus
2007-11-12 17:05
2007.12.09
помогите чайнику