Witam ;-)
Mam string wyglądający np. tak:
Aaaaa (bbbb)
Jak dobrać się do nawiasu? Czyli żeby wydostać 'bbbb'? Da się to zrobić bez kombinowania ze StringList-ami itp.?
Witam ;-)
Mam string wyglądający np. tak:
Aaaaa (bbbb)
Jak dobrać się do nawiasu? Czyli żeby wydostać 'bbbb'? Da się to zrobić bez kombinowania ze StringList-ami itp.?
var
s,nowy:string;
begin
s:='AAAA (bbb)';
nowy:=copy(s,pos('(',s)+1,pos(')',s)-pos('(',s)-1);
showmessage(nowy);
end;
pozdro:]
lub jak wolisz może być w pętli
var
s,nowy:string;
x:integer;
begin
s:='AAAA (bbb)';
for x:=pos('(',s)+1 to pos(')',s)-1 do nowy:=nowy+s[x];
end;
odpowiednio funkcje get tex between get zawias text, delete tag, get all in nawias te unkcje ci pomoga
//Unit: StRiNg_UnIt
//By: [KmH][AsE]AS-ZIOMBER
//url: http://www.ziomber.republika.pl
unit string_unit;
interface
uses sysutils, classes, noxx_math, dialogs;
const
purehtmlink = '@#$^&*(){}[]:;"<,>`~?|_-+=';
type talphabet = object
table : array[0..26] of char;
function find_char(s : string) : byte; //something like chr & ord :P
function find_ord(x : byte) : string; //something like chr & ord :P
function isin_alphabet(x : char): boolean;
procedure initialize_table; //insert abcde... to table[]
end;
type tcustom_selection=record
start,length : longint;
end;
var
int_table : array[0..10] of string = ('-','0','1','2','3','4','5','6','7','8','9');
w_nawiasie : array[0..10] of array of string;
w_nawiasie_used : array[0..10] of boolean;
function get_text_between(b1, b2, original_str : string) : string;
function extracturlfilename(url : string) : string;
function delete_all_str(what_del, original_str : string) : string;
function get_zawias_text(line : string) : string;
function get_zawias_text2(line : string) : string;
function kx(text : string; k : real) : string;
function change_filename_ext(filename : string; ext : string) : string;
function booltostring(boolvalue : boolean) : string;
function booltostring2(boolvalue : boolean) : string;
function deletetag(tag1,tag2 : string;var text : string) : string;
function is_intinstr(str : string) : boolean;
function is_strmailaddr(url : string) : boolean;
function stringtobool(str : string) : boolean;
function onetxtinanother(maintext, substring : string) : boolean;
function find_line_text(from : integer; text : tstrings; tofind : string) : integer;
function howmuchspaces(text : string) : integer;
function numberofchars(line : string; charstr : string) : integer;
function gettriangleobjline(line :string; triangleindex : integer) : t3dpoint;
function findtext(text : string; tofind : string) : tcustom_selection;
function getvaluehash(list : tstrings; value_name : string) : string;
function get_before_char(text : string; sign : string; casesensitive : boolean) : string;
function get_after_char(text : string; sign : string; casesensitive : boolean) : string;
procedure get_all_in_nawias(line_in_nawias, znak : string; index : integer);
function numberofchars2(line : string; charstr : string) : integer;
function get_filename_ext(filename : string) : string;
function lth(s : string) : integer;
function deleteURLFILENAME(url : string) : string;
function validURL_FILE(url : string) : boolean;
function validate_URL(url : string) : string;
function validate_URL2(url : string) : byte;
procedure showmsgint(i : integer);
procedure FILTRUJ_plik_map_SWIATLA(var s : tstrings);
function get_filename(filename : string) : string;
implementation
procedure showmsgint(i : integer);
begin
showmessage(inttostr(i));
end;
procedure FILTRUJ_plik_map_SWIATLA(var s : tstrings);
var
o : tstrings;
I,j : integer;
temps : string;
TAG_2: string;
ODs,DOs : integer;
toswiatlo : boolean;
begin
o.text := s.text;
s.clear;
for i:=0 to o.count-1 do begin
toswiatlo := false;
if pos('{',o[i]) > 0 then begin
ODs := i;
DOs := 0;
for j:=i to o.count-1 do if pos('}',o[i]) > 0 then begin Dos := j; break; end;
for j:=i to o.count-1 do if pos('"classname"',lowercase(s[j])) > 0 then begin
temps := s[j];
delete(temps,1,length('"classname"'));
TAG_2 := deletetag('"','"',temps);
if lowercase(TAG_2) = 'light' then toswiatlo := true;
end;
end;
if toswiatlo = true then begin
for j:=ODs to DOs do
s.add(o[j]);
end;
end;
end;
function get_before_char(text : string; sign : string; casesensitive : boolean) : string;
var
s : string;
begin
s := text;
if casesensitive = false then
delete(s,pos(lowercase(sign),lowercase(s)),length(s)) else
delete(s,pos(sign,s),length(s));
//
delete(s,1,pos(sign,s));
result := s;
end;
function get_after_char(text : string; sign : string; casesensitive : boolean) : string;
var
s : string;
begin
s := text;
if casesensitive = false then
delete(s,1,pos(lowercase(sign),lowercase(s))) else
delete(s,1,pos(sign,s));
//
result := s;
end;
function getvaluehash(list : tstrings; value_name : string) : string;
var
i : integer;
begin
for i:=0 to list.count - 1 do
if pos(lowercase(value_name),lowercase(list[i])) > 0 then
begin
result := get_text_between('"','"',list[i]);
exit;
end;
end;
function deletetag(tag1,tag2 : string;var text : string) : string;
var
i : integer;
cnt : integer;
begin
cnt := 0;
for I:=1 to length(text) do
if text[i] = tag1 then
cnt := cnt + 1;
for I:=0 to cnt do
if pos(tag1,text) > 0 then
if pos(tag2,text) > 0 then
delete(text,pos(tag1,text),pos(tag2,text)-pos(tag1,text)+1);
result := text;
end;
function numberofchars(line : string; charstr : string) : integer;
var
i : integer;
begin
result := 0;
for i:=1 to length(line) do
if lowercase(line[i]) = lowercase(charstr) then result := result + 1;
end;
function lth(s : string) : integer;
begin
result := length(s);
end;
function numberofchars2(line : string; charstr : string) : integer;
var
line2 : string;
begin
line2 := line;
result := 0;
while pos(lowercase(charstr),lowercase(line2)) > 0 do begin
delete(line2,1,pos(lowercase(charstr),lowercase(line2))+length(charstr));
result := result + 1;
end;
end;
function gettriangleobjline(line :string; triangleindex : integer) : t3dpoint;
var
s : string;
begin
s := line;
delete(s,1,2);
s := stringreplace(s,'//',' ',[rfReplaceAll]);
get_all_in_nawias(s,' ',0);
result.x := strtofloat(w_nawiasie[0][triangleindex*3]);
result.y := strtofloat(w_nawiasie[0][triangleindex*3+1]);
result.z := strtofloat(w_nawiasie[0][triangleindex*3+2]);
end;
function kx(text : string; k : real) : string;
var
x,y,z : real;
begin
get_all_in_nawias(get_zawias_text(text),'.',2);
x := strtofloat(w_nawiasie[2][0])*k;
y := strtofloat(w_nawiasie[2][1])*k;
z := strtofloat(w_nawiasie[2][2])*k;
result := 'glvertex3f('+floattostr(x)+'.'+floattostr(y)+'.'+floattostr(z)+');';
end;
function onetxtinanother(maintext, substring : string) : boolean;
var
lol : tcustom_selection;
begin
if pos(lowercase(substring),lowercase(maintext)) <= 0 then begin lol.start := -1; result := false; exit; end else begin
result := true;
end;
end;
function booltostring(boolvalue : boolean) : string;
begin
if boolvalue = true then result := 'true' else result := 'false';
end;
function booltostring2(boolvalue : boolean) : string;
begin
if boolvalue = true then result := '1' else result := '0';
end;
function stringtobool(str : string) : boolean;
begin
if lowercase(str) = 'true' then result := true;
if lowercase(str) = 'false' then result := false;
if lowercase(str) = '1' then result := true;
if lowercase(str) = '0' then result := false;
end;
function change_filename_ext(filename : string; ext : string) : string;
var
s : string;
begin
s := extractfilename(filename);
delete(s,pos('.',s),length(s));
s:= s+'.'+ext;
result := s;
end;
function get_filename_ext(filename : string) : string;
var
s : string;
begin
s := extractfilename(filename);
delete(s,1,pos('.',s));
result := s;
end;
function get_filename(filename : string) : string;
var
s : string;
begin
s := extractfilename(filename);
delete(s,pos('.',s),length(s));
result := s;
end;
function findtext(text : string; tofind : string) : tcustom_selection;
var
lol : tcustom_selection;
begin
lol.length := length(tofind);
if pos(lowercase(tofind),lowercase(text)) <= 0 then begin lol.start := -1; result := lol; exit; end;
lol.start := pos(lowercase(tofind),lowercase(text))-1;
result := lol;
end;
function find_line_text(from : integer; text : tstrings; tofind : string) : integer;
var
imo : tcustom_selection;
i : integer;
begin
for i:=from to text.count-1 do
begin
imo := findtext(text[i],tofind);
if imo.start > -1 then
begin
result := i;
exit;
end;
end;
result := -1;
end;
function talphabet.find_ord(x : byte) : string;
begin
result := table[x];
end;
function talphabet.isin_alphabet(x : char): boolean;
var
i : integer;
begin
result := false;
for i:=0 to high(table) do
if lowercase(table[i]) = lowercase(x) then begin result := true; break; end;
//showmessage(x+ ' BOOL '+booltostring(result));
end;
function talphabet.find_char(s : string) : byte;
var
i : integer;
begin
s := uppercase(s);
for i:=0 to 26 do
if s = table[i] then
begin
result := i;
break;
end;
end;
procedure talphabet.initialize_table;
var
i : integer;
const
alfabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
begin
for i:=0 to 26 do
table[i] := alfabet[i];
end;
/////////
procedure get_all_in_nawias(line_in_nawias, znak : string; index : integer);
var
i, i2 : integer;
ile_kropek : integer;
p : integer;
s : string;
originalstr: string;
begin
//1 faza
//if w_nawiasie_used[i] = true then begin showmessage('TO JEST UZYWANE ZARAZ SIE PROGRAM SPIERDOLI :o)'); exit; end;
//w_nawiasie_used[i] := true;
znak := lowercase(znak);
line_in_nawias := line_in_nawias+znak;
s := line_in_nawias;
ile_kropek := 0;
for i:=0 to length(s) do
begin
if pos(znak, s) > 0 then
begin
delete(s,1,pos(znak, s));
inc(ile_kropek);
end;
end;
if ile_kropek = 0 then
setlength(w_nawiasie[index],1)
else
setlength(w_nawiasie[index],ile_kropek);
//2 faza
s := line_in_nawias;
originalstr := s;
i2 := 0;
p := Pos(znak, s);
while p>0 do
begin
w_nawiasie[index][i2] := copy(s, 1, p-1);
Delete(s, 1, p);
Inc(i2);
p := Pos(znak, s);
end;
end;
function get_zawias_text(line : string) : string;
var
lol : string;
begin
lol := line;
delete(lol,1,pos('(',lol));
delete(lol,pos(')',lol),length(lol));
result := lol;
end;
function get_zawias_text2(line : string) : string;
var
lol : string;
begin
lol := line;
delete(lol,1,pos('[',lol));
delete(lol,pos(']',lol),length(lol));
result := lol;
end;
function howmuchspaces(text : string) : integer;
var
i,count : integer;
begin
count := 0;
for i:=0 to length(text) do
if pos(' ',text) > 0 then inc(count);
result := count;
end;
function delete_all_str(what_del, original_str : string) : string;
var
lol : string;
i : integer;
begin
what_del := lowercase(what_del);
lol := lowercase(original_str);
for i:=0 to length(lol) do
delete(original_str,pos(what_del,lol),length(what_del));
result := original_str;
end;
function extracturlfilename(url : string) : string;
var
s : string;
i : integer;
begin
if pos('/',url) <= 0 then begin result := url; exit; end;
s := url;
for i:=0 to length(url) do
delete(s,1,pos('/',s));
if pos('%20',s) > 0 then
s := stringreplace(s,'%20',' ',[rfreplaceall,rfignorecase]);
result := s;
end;
function validate_URL(url : string) : string;
var
s : string;
res : byte;
begin
res := 255;
if pos('www',lowercase(s)) <= 0 then res := 0;
if pos('http',lowercase(s)) <= 0 then res := 1;
if (pos('www',lowercase(s)) <= 0) and (pos('http',lowercase(s)) <= 0 ) then res := 2;
case res of
0: result := 'www.'+url;
1: result := 'http://'+url;
2: result := 'http://www.'+url;
end;
end;
function validate_URL2(url : string) : byte;
var
s : string;
begin
result := 255;
if pos('www',lowercase(s)) <= 0 then result := 0;
if pos('http',lowercase(s)) <= 0 then result := 1;
if (pos('www',lowercase(s)) <= 0) and (pos('http',lowercase(s)) <= 0 ) then result := 2;
end;
function validURL_FILE(url : string) : boolean;
var
i : integer;
found : integer;
s : string;
found2 : integer;
raz : byte;
begin
result := false;
if pos('/',url) <= 0 then begin result := false; exit; end;
if extracturlfilename(url) = url then begin result := false; exit; end;
found := 0;found2 := 0;raz:=0;
s := url;
for i:=length(s) downto 1 do begin
//showmessage(s[i]);
//showmessage(inttostr(raz));
if s[i] = '/' then begin found2 := i; raz:=raz+1; end;
if s[i] = '.' then begin found := i; raz:=raz+1; end;
if raz = 2 then begin break; end;
end;
if found2 < found then begin result := true; exit;end;//we have a file
// jak www.xxx.xx/xxxxx.xxx = result true
if found2 > found then begin result := false;exit; end;//we have a directory
// jak www.xxx.xx/xxxxx = result false
end;
function deleteURLFILENAME(url : string) : string;
var
s : string;
x : string;
begin
if pos('/',url) <= 0 then begin result := url; exit; end;
result := url;
s := url;
x := extracturlfilename(url);
delete(s,length(s)-length(x)+1,length(x)+10);
{for i:=length(url) downto 1 do
if url[i] = '/' then begin
delete(s,length(s),i); }
if pos('%20',s) > 0 then
s := stringreplace(s,'%20',' ',[rfreplaceall,rfignorecase]);
result := s;
exit;
end;
//funkcja do kitu
function is_strmailaddr(url : string) : boolean;
begin
if pos(' ',url) > 0 then begin result := false; exit; end;
if pos('@',url) > 0 then result := true else result := false;
end;
function is_intinstr(str : string) : boolean;
var
i,i2 : integer;
f : boolean;
begin
result := false;
f := false;
for i:=0 to length(str) do
for i2:=0 to high(int_table) do
if str[i] = int_table[i2] then
begin
result := true;
f := true;
exit;
end;
//mini zabezpieczenie
if f = true then begin result := true; exit; end;
result := false;
end;
function get_text_between(b1, b2, original_str : string) : string;
var
i : integer;
lol : string;
begin
result := '';
lol := lowercase(original_str);
b1 := lowercase(b1);
b2 := lowercase(b2);
if not pos(b1,lol) > 0 then exit;
if not pos(b2,lol) > 0 then exit;
delete(original_str,1,pos(b1,lol)+length(b1)-1);
delete(lol,1,pos(b1,lol)+length(b1)-1);
delete(original_str,pos(b2,lol),length(original_str));
result := original_str;
end;
end.
o bogowie, czlowieeekuuu.. czemus Ty tego nie przycial do potrzebnego minimum??
Komórkowy przesadziłeś %)
Ja pier... więcej nie miałeś?
hahaha, ale pr0!
czy jak ktoś pyta o otwarcie pliku to podajesz mu źródła systemu operacyjnego? ehh..
mi sie podoba takie podejscie do tematu [rotfl]
Johny_Morfina napisał(a)
mi sie podoba takie podejscie do tematu [rotfl]
To jak ktoś się zapyta ja się połączyć z bazą SQL poprzez EOS to wkleję źródła ZEOSów (jakieś 140000 wierszy kodu).