Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Вниз

String индексы и VAR параметр   Найти похожие ветки 

 
Hog   (2003-06-10 16:14) [0]

Тут код проходил по нитки где-то...

Там передавалось в Func(var Buf; Var:integer);

вот так

Func(s[1],1) - к примеру.

В хелпах по дельфи для String я нашел

AnsiString, sometimes called the long string, is the preferred type for most purposes.

You can index a string variable just as you would an array. If S is a string variable and i an integer expression, S[i] represents the ith character--or, strictly speaking, the ith byte--in S. For a ShortString or AnsiString, S[i] is of type AnsiChar; for a WideString, S[i] is of type WideChar. For single-byte (Western) locales, MyString[2] := "A"; assigns the value A to the second character of MyString. The following code uses the standard AnsiUpperCase function to convert MyString to uppercase.

var I: Integer;
begin
I := Length(MyString);
while I > 0 do
begin
MyString[I] := AnsiUpperCase(MyString[I]);
I := I - 1;
end;
end;


Be careful indexing strings in this way, since overwriting the end of a string can cause access violations.

Also, avoid passing long-string indexes as var parameters, because this results in inefficient code.

Из последней фразы можно сделать вывод, что передавать S[1] получается неэффективный код?
Или я не понял что-то?


 
VMcL   (2003-06-10 17:04) [1]

>Hog (10.06.03 16:14)

Как ты так умудрился скопировать help?
Не AnsiUpperCase, а UpCase.


 
Hog   (2003-06-10 17:13) [2]

У меня именно в хелпе AnsiUpperCase... (Delphi 7)

Я просто вырезку привел, код здесь не самое основное...

Я просил прояснить, то что жирным, внизу


 
Smithson   (2003-06-10 17:28) [3]

Видишь ли, строка в Delhpi больше чем строка, это уже почти объект. Ита переменная, которая описана как : String, уже указатель. Поэтому код получается - получить по указателю адрес первого байта и передать этот адрес. Плюс, при такой передаче параметра, библиотечный код не может отследить выход за пределы отведенной строке памяти (в нормальном случае он это отслеживает и увеличивает память при необходиомсти). Вот тебе пояснение.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.027 c
3-83902
Шаповалов Кирилл
2003-06-02 10:54
2003.06.26
Почему может не работать Locate?


1-84149
Bosso
2003-06-11 09:57
2003.06.26
Как бороть баг с 300-ми кнопками?


3-83941
Stam
2003-05-23 10:26
2003.06.26
Ошибка при работе с Oracle - ORA-04031. Помогите...


3-83913
abc
2003-06-02 19:12
2003.06.26
как скрыть TQuickRep?? т.к когда кидаешь его на форму...


11-84052
Юзер
2002-10-09 23:22
2003.06.26
Что вы думаете о компоненте





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