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

Вниз

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

Наверх




Память: 0.47 MB
Время: 0.046 c
14-84731
Juster~
2003-05-31 22:18
2003.06.26
Ээээээ...


14-84722
Kladov
2003-02-14 22:59
2003.06.26
---|Ветка была без названия|---


6-84502
andrei
2003-04-24 10:07
2003.06.26
Как создать полноценный Web Server


1-84322
And
2003-06-16 07:26
2003.06.26
Подскажите что лучше использовать?


1-84180
Doc
2003-06-11 17:21
2003.06.26
String, TObject и т.д. - Pointer?