Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.47 MB
Время: 0.046 c
15-1194559339
Pacific
2007-11-09 01:02
2007.12.09
Функции


15-1194723363
Dib@zol
2007-11-10 22:36
2007.12.09
Количество символов в DWORD-переменной


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


15-1194944354
Ega23
2007-11-13 11:59
2007.12.09
конкурс на имя класса


11-1180182392
VPBar
2007-05-26 16:26
2007.12.09
Ошибка TStrListEx.DeleteLast ??





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский