Avatar billede dcgeek Nybegynder
25. maj 2003 - 13:34 Der er 7 kommentarer og
1 løsning

Udskrive en string?

Jeg har før spurgt efter en funktion hvor jeg havde en string, lad os sige "abc 123;" hvor jeg så kunne gøre noget lignende:

var s,t: string;
begin
  s := 'abc 123;';
  t := indlaes('abc ',';',s);
end;

funktionen indlaes() indlæser nu alt hvad der står mellem "abc " og ";".

Men problemet opstår når jeg så har flere tegn, f.eks. en string med følgende:

abc 123; hulabula 535; cba 421;

når jeg så bruger indlaes() funktionen udskriver den ingenting, da der jo er flere steder hvor der er et ;-tegn.

Så mit spørgsmål lyder på: Hvordan laver jeg en funktion, kaldet indlaes() hvor jeg kan indlaese alt hvad der står mellem en string og det næste ;-tegn der kommer efter denne string?
Avatar billede cms Nybegynder
25. maj 2003 - 14:03 #1
function Indlaes(FromStr, ToStr, Str: String): String;
begin
  Result := Copy(Str, Pos(FromStr, Str), Pos(ToStr, Copy(Str, Pos(FromStr, Str), MaxInt)) - 1);
end;

- ikke testet
Avatar billede cms Nybegynder
25. maj 2003 - 14:04 #2
kaldes Indlaes('abc', ';', s);
Avatar billede dcgeek Nybegynder
25. maj 2003 - 14:31 #3
hvis jeg nu har stringen abc=1252352; så udskriver den jo "abc=1252352"
Det skal den ikke
Avatar billede athlon-pascal Juniormester
25. maj 2003 - 15:18 #4
Dette er testet:

function Indlaes(FromStr, ToStr, Str: String): String;
begin
  Result := Copy(Str, Pos(FromStr, Str) + Length(FromStr), Pos(ToStr, Copy(Str, Pos(FromStr, Str) + Length(FromStr), Length(Str))) - 1);
end;

Held og lykke :-)

(Lånte lidt kode fra cms...)
Avatar billede athlon-pascal Juniormester
25. maj 2003 - 16:10 #5
Jeg har opdaget en fejl.

Brug denne funktion i stedet:

function Indlaes(FromStr, ToStr, Str: String): String;
begin
  if Pos(FromStr, Str) > 0 then
    Result := Copy(Str, Pos(FromStr, Str) + Length(FromStr), Pos(ToStr, Copy(Str, Pos(FromStr, Str) + Length(FromStr), Length(Str))) - 1)
  else
    Result := '';
end;
Avatar billede dcgeek Nybegynder
25. maj 2003 - 16:32 #6
det virker. Takker :)
Avatar billede athlon-pascal Juniormester
25. maj 2003 - 17:02 #7
cms -> Hvis du også vil have lidt points (jeg ændrede jo bare på din funktion), så bare sig til :-)
Avatar billede cms Nybegynder
25. maj 2003 - 19:57 #8
no prob :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester