Главная страница
    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.46 MB
Время: 0.045 c
6-1175280082
Адепт Магии Слова
2007-03-30 22:41
2007.12.09
Как програмно можно изменить рабочую группу компьютера


1-1190293681
Lpnt
2007-09-20 17:08
2007.12.09
Отображение данных.


2-1195214661
allucard
2007-11-16 15:04
2007.12.09
Delphi + firebird


1-1190020523
Алик
2007-09-17 13:15
2007.12.09
Хэш-коды и с чем их едят?


2-1195204511
Pro100
2007-11-16 12:15
2007.12.09
Дробная часть





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский