narazil jsem na nečekanej problém a nevím jak se na to googlu zeptat, tak nemůžu najít žádnou pomoc.
příklad:
mám text adresy: Myslivecká 2215/37 a já z toho potřebuji udělat: Myslivecká 37. čili bez čísla orientačního.
napsal jsem:
- Kód: Vybrat vše
function ZkratUlici(ulice: String): String;
var i: Integer; zapsat: Boolean; sUlice: String;
begin
Result:= '';
sUlice:= '';
if pos(ulice, '/') > -1 then begin
zapsat:= True;
for i:= 0 to Length(ulice) do begin
if zapsat then sUlice:= sUlice + ulice[i];
if ulice[i] = ' ' then zapsat:= False;
if ulice[i] = '/' then zapsat:= True;
end;
end;
Result:= sUlice;
end;
ale bohužel výsledek je '' ... zkoušel jsem i jiny cykly, ale stejný.
problém je ve spojení sUlice s ulice. nechápu, proč se v cyklech ty stringy nespojují ..
když dám vypsat samostatny ulice[i], tak se to písmeno normálně zobrazí.
prosím pomozte.
[i]-- 25. 6. 2018 11:04 --
tak hned jak jsem to poslal mě napadlo to udělat jinak, dokonce líp, protože ta minulá funkce by špatě vrátila třeba adresu: U Potoka 1234/56, nebo: mojmírovo nám. 5566/12,
nová funkce vypadá takhle:
- Kód: Vybrat vše
function ZkratUlici(ulice: String): String;
var i, a1, a2: Integer;
begin
Result:= '';
if pos(ulice, '/') > -1 then begin
for i:= Length(ulice) downTo 0 do begin
if ulice[i] = '/' then a2:= i;
if ulice[i] = ' ' then begin a1:= i; break; end;
end;
end;
Delete(ulice, a1 + 1, a2 -a1);
Result:= ulice;
end;
pokud by se někomu chtělo mi vysvětlit proč nefunguje to spojování textu v cyklu, tak budu rád,
ale jinak je téma vyřešeno ...