Programowanie w języku Delphi » FAQ

Typ danych w Stringu

Niekiedy zawartość Stringa musimy przerzutować na inny typ danych. Ale by tego dokonać powinniśmy wiedzieć co tekst zawiera. Poniżej przedstawię ideę jak sobie radzić z tego typu zadaniami.

Uwaga
Przy tworzeniu funkcji skorzystałem z dobrodziejstw modułu madStrings który wchodzi w skład pakietu madBasic. Dodam że ten można za darmo pobrać (ze strony autora: www.madshi.net) i nie ponosząc konsekwencji prawnych wykorzystywać również w aplikacjach komercyjnych.

Do dzieła: Zacznijmy od zadeklarowania tablicy, która zresztą demonstruje z jakimi danymi funckja będzie sobie radzić:

type TypDanych=(DA_INTEGER,DA_DOUBLE,DA_SINGLE,DA_TIME,DA_STRING);


Nie zapominajmy o dodaniu w uses modułu madStrings. No i najwyższa pora na naszą funkcję.

function PobierzTypDanych(Tekst:String):TypDanych;
begin
 if StrMatchEx(Tekst,'['+IntToStr(Length(tekst))+':0..9]') then
 result:=DA_INTEGER else
 if (StrMatchEx(Tekst,'*.[2:0..9]' ) or StrMatchEx(Tekst,'*.[1:0..9]' )) then result:=DA_DOUBLE else
 if StrMatchEx(Tekst,'[0..2][0..9]?[0..5][0..9]?[0..5][0..9]' ) then result:=DA_TIME else
 if StrMatch (Tekst,'*.*' ) then result:=DA_SINGLE else result:=DA_STRING;
end;


Malutki tip ale mam nadzieje że się komuś przyda ;-)
Tak czy owak rozbudowanie tej funkcji jest bardzo proste a jej działanie może okazać się niezastąpione przy tworzeniu wszelkiego rodzaju parserów plików tekstowych

2 komentarze

Marcin Baszczewski 2006-09-24 22:54

Owszem widziales ;-) (http://www.mbaszczewski.jogger.pl/)

Co prawda tej porady tam juz nie znajdziesz... (skasowalem ja)
ale na dniach skoncze pisac artykul o korzystaniu z Virtual Treeview.
Arcik opublikuje rowniez na 4 programmers.

Ktos 2006-09-24 15:19

Hmm. Czy ja tego na Joggerze nie widziałem?

Ale to co tutaj widać to jest zwykłe używanie wyrażeń regularnych - można też skorzystać z innego modułu do obsługi PCRE jeśli ktoś nie chce madBasic.