Вниз
Скачать: CL | DM;

TStrings -> метод GetDelimitedText свойства DelimitedText   Найти похожие ветки 

 
NieL ©   (2009-04-16 15:00) [0]

Уважаемые Мастера, я как начинающий программист не въезжаю в некоторые тонкости поэтому прошу разъяснить следующий момент:

Вот код метода GetDelimitedText свойства DelimitedText (класс TStrings):


function TStrings.GetDelimitedText: string;
var
 S: string;
 P: PChar;
 I, Count: Integer;
begin
 Count := GetCount;
 if (Count = 1) and (Get(0) = "") then
   Result := QuoteChar + QuoteChar
 else
 begin
   Result := "";
   for I := 0 to Count - 1 do
   begin
     S := Get(I);
     P := PChar(S);
     while not (P^ in [ #0.." ", QuoteChar, Delimiter]) do
     {$IFDEF MSWINDOWS}
       P := CharNext(P);
     {$ELSE}
       Inc(P);
     {$ENDIF}
     if (P^ <> #0) then S := AnsiQuotedStr(S, QuoteChar);
     Result := Result + S + Delimiter;
   end;
   System.Delete(Result, Length(Result), 1);
 end;
end;



Чем обусловлена необходимость использования в коде блоков (без них ведь все и так как мне кажется работает как надо):


 if (Count = 1) and (Get(0) = "") then
   Result := QuoteChar + QuoteChar


и


P := PChar(S);
     while not (P^ in [ #0.." ", QuoteChar, Delimiter]) do
     {$IFDEF MSWINDOWS}
       P := CharNext(P);
     {$ELSE}
       Inc(P);
     {$ENDIF}
     if (P^ <> #0) then S := AnsiQuotedStr(S, QuoteChar);


 
clickmaker ©   (2009-04-16 15:03) [1]

> {$IFDEF MSWINDOWS}
>       P := CharNext(P);
>     {$ELSE}

CharNext есть только в windows api. Тогда как VCL задумывалась как кросс-платформенная



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.007 c
15-1238581767
cyber-pilot
2009-04-01 14:29
2009.05.31
Распознавание текста


15-1238504560
Городской Шаман
2009-03-31 17:02
2009.05.31
Похоже, старый подход к разработке игр скоро вымрет.


3-1221633388
Drowsy
2008-09-17 10:36
2009.05.31
Commit транзакции инсерта в таблицу базы закрывает эту таблицу.


15-1238075545
@!!ex
2009-03-26 16:52
2009.05.31
ПОчему все так не любытя ReactOS?


3-1221485321
Jeer
2008-09-15 17:28
2009.05.31
DBExpress.CleanupIntance;




   Наверх