Главная страница
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.016 c
8-84460
Dimonich
2003-03-07 14:30
2003.06.26
Как определить длину проигрываемого саунд трека?


1-84433
Эстонец
2003-06-09 18:37
2003.06.26
Диалог смены иконки


3-83996
YuN
2003-05-28 15:59
2003.06.26
Проблема с кодировками (BDE)


3-83889
Levsha
2003-06-01 21:41
2003.06.26
Lookup field в DBgride, у когонить получалось???


3-84011
McSimm2
2003-05-30 14:22
2003.06.26
Не конектится к ORACLE