🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi
14 messages
14 total messages Started by konsul41 Tue, 24 Apr 2018 10:43
String Substring
#346570
Author: konsul41
Date: Tue, 24 Apr 2018 10:43
21 lines
1507 bytes
Od którego Delphi można używać takiej konstrukcji?


function TGUSController.ConvertData(AData,ATag: string): string;
var
   s: string;
begin
...
   if AData.IndexOf(EmptyTag)>0 then
     exit;
   s:=AData;
   if s.IndexOf(EndTag)>0 then
   begin
     s:=s.Substring(0,s.IndexOf(EndTag));
     s:=s.Substring(s.IndexOf(StartTag));
     s:=s.Remove(0,StartTag.Length);

Wycinek pochodzi z http://pliki.merco.pl/izzy.gus.zip
Chodzi oczywiście o
AData.IndexOf...
s.Substring...
Re: String Substring
#346571
Author: konsul41
Date: Tue, 24 Apr 2018 10:50
5 lines
1141 bytes
> AData.IndexOf...
> s.Substring...
> 

Czy to jest Delphi NET?
Re: String Substring
#346572
Author: konsul41
Date: Tue, 24 Apr 2018 10:57
8 lines
1270 bytes
W dniu 24-04-2018 o 12:50, konsul41@wp.pl pisze:
>> AData.IndexOf...
>> s.Substring...
>>
> 
> Czy to jest Delphi NET?

Już wiem TStringHelper.
Re: String Substring
#346573
Author: Jan Drawski
Date: Tue, 24 Apr 2018 10:58
13 lines
1221 bytes
W dniu 2018-04-24 o 12:50, konsul41@wp.pl pisze:
>> AData.IndexOf...
>> s.Substring...
>>
> 
> Czy to jest Delphi NET?

Nie, to nie jest Delphi .NET.
W XE6 już można było tego używać, wcześniej nie wiem od której wersji.

-- 
Pozdrawiam
Janek
Re: String Substring
#346574
Author: Roman Tyczka
Date: Tue, 24 Apr 2018 11:40
9 lines
1082 bytes
On Tue, 24 Apr 2018 12:43:40 +0200, konsul41@wp.pl wrote:

> Od którego Delphi można używać takiej konstrukcji?
 
Jeśli dobrze pamiętam to od XE3.

-- 
pozdrawiam
Roman Tyczka
Re: String Substring
#346575
Author: konsul41
Date: Tue, 24 Apr 2018 12:18
9 lines
1235 bytes
W dniu 24-04-2018 o 13:40, Roman Tyczka pisze:
> On Tue, 24 Apr 2018 12:43:40 +0200, konsul41@wp.pl wrote:
> 
>> Od którego Delphi można używać takiej konstrukcji?
>   
> Jeśli dobrze pamiętam to od XE3.
> 
Noż ...
A Ja mam Xe2.
Re: String Substring
#346576
Author: Roman Tyczka
Date: Wed, 25 Apr 2018 07:49
16 lines
1321 bytes
On Tue, 24 Apr 2018 14:18:52 +0200, konsul41@wp.pl wrote:

>>> Od którego Delphi można używać takiej konstrukcji?
>>   
>> Jeśli dobrze pamiętam to od XE3.
>> 
> Noż ...
> A Ja mam Xe2.

Tu masz dość zgrabną listę nowości wg wersji Delphi:

https://stackoverflow.com/questions/8460037/list-of-delphi-language-features-and-version-in-which-they-were-introduced-depre

-- 
pozdrawiam
Roman Tyczka
Re: String Substring
#346577
Author: mihoo
Date: Thu, 17 May 2018 13:23
22 lines
1982 bytes
> Od którego Delphi można używać takiej konstrukcji?


Chodzi o wycięcie wartości między znacznikami hipertekstu?
Od wersji 2010 można używać mojej biblioteki OLTypes.
https://bitbucket.org/mihoor/oltypes/wiki/Home

Przykład:

var
  s: OLString;
begin
  s := '<xml><imie>Jan</imie><nazwisko>Kowalski</nazwisko></xml>';

  //Wycinanie wg tagów
  ShowMessage(s.FindPatternStr('nazwisko'));
  ShowMessage(s.FindPatternStr('imie'));

  ShowMessage(s.MidStr(5, 3));//Odpowiednik Substring
  ShowMessage(s.Pos('Michał').ToString());//Odpowiednik IndexOf
  ShowMessage(s.Deleted(1, 5));//Odpowiednik Remove
end;
Re: String Substring
#346578
Author: Roman Tyczka
Date: Thu, 17 May 2018 13:57
27 lines
1746 bytes
On Thu, 17 May 2018 06:23:22 -0700 (PDT), mihoo wrote:

>> Od którego Delphi można używać takiej konstrukcji?
> 
> 
> Chodzi o wycięcie wartości między znacznikami hipertekstu?
> Od wersji 2010 można używać mojej biblioteki OLTypes.
> https://bitbucket.org/mihoor/oltypes/wiki/Home

Zajrzałem, całkiem fajna ta biblioteka, choć takie kwiatki odpychają:

OLString = record
[...]
    function Like(Pattern: OLString): OLBoolean;
    function Pos(SubStr: string; [...]): OLInteger;
    function PosEx(SubStr: string; Offset: integer; [...]): OLInteger;
    function OccurrencesCount(SubString: string; [...]): OLInteger;
    function OccurrencesPosition(SubString: string; Index: integer;[...]):
OLInteger;
    procedure LineAdd(NewLine: string);
[...]



-- 
pozdrawiam
Roman Tyczka
Re: String Substring
#346579
Author: mihoo
Date: Fri, 18 May 2018 07:08
2 lines
1509 bytes
Przyznaję skromnie, że nie rozumiem. Będę wdzięczny za naukę.
Co mogę tu poprawić?
Re: String Substring
#346580
Author: Jan Drawski
Date: Fri, 18 May 2018 08:47
9 lines
1314 bytes
W dniu 2018-05-18 o 09:08, mihoo pisze:
> Przyznaję skromnie, że nie rozumiem. Będę wdzięczny za naukę.
> Co mogę tu poprawić?

Mi się nie podoba OLBoolean, OLInteger itp. Dlaczego nie Boolean i Integer?

-- 
Pozdrawiam
Janek
Re: String Substring
#346582
Author: Jan Drawski
Date: Fri, 18 May 2018 10:00
9 lines
1356 bytes
W dniu 2018-05-18 o 09:08, mihoo pisze:
> Przyznaję skromnie, że nie rozumiem. Będę wdzięczny za naukę.
> Co mogę tu poprawić?

"class" przed deklaracją funkcji i "static" po niej?

-- 
Pozdrawiam
Janek
Re: String Substring
#346581
Author: mihoo
Date: Fri, 18 May 2018 10:17
15 lines
2538 bytes
> Mi się nie podoba OLBoolean, OLInteger itp. Dlaczego nie Boolean i Integer?

Poza kilkoma wyjątkami OLBoolean jest zamienny z Boolean, OLInteger z Integer, itd ...

To znaczy, że mogę przypisać wynik OLString.Pos() do zmiennej typu Integer, chociaż formalnie metoda zwraca OLInteger. Sprawę załatwiają przeciążone operatory. Można dodać/odjąć/porównać zmienną OLInteger ze zmienną typu Integer.

Przykład wyjątku, gdy OLInteger nie zastępuje Integer, stanowi sytuacja, gdy mamy
 
procedure Pr(var Output: integer);

Kompilator wymaga wtedy podania jako parametr zmiennej typu integer i OLInteger odpada.


==================
Mnie raczej denerwuje, że nie wszędzie gdzie bym chciał, mogłem użyć typów OL zamiast "zwykłych". To dlatego, że typy muszą być zdefiniowane po kolei, np. Najpierw definiuję OLInteger, a dopiero później OLString. W OLInteger.ToString() nie mogę zwrócić OLString, ale już w OLString.Length() może być zwrócony OLInteger.
Re: String Substring
#346583
Author: Roman Tyczka
Date: Fri, 18 May 2018 10:39
15 lines
1582 bytes
On Fri, 18 May 2018 00:08:11 -0700 (PDT), mihoo wrote:

> Przyznaję skromnie, że nie rozumiem. Będę wdzięczny za naukę.
> Co mogę tu poprawić?

Brak const'ów powodujący podwójne alokacje pamięci przy wywoływaniu tych
metod (i wielu innych). Warto też dodać, że alokacja pamięci dla stringa
blokuje manager pamięci i przy aplikacji wielowątkowej staje się to wąskim
gardłem, który tłamsi całą wydajność. Choć to już raczej w apce VCL jest
nie do odczucia, bardziej w aplikacjach, które prztwarzają dane lub
serwerach.

-- 
pozdrawiam
Roman Tyczka
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads