Avatar billede tuctoh Nybegynder
17. april 2004 - 14:52 Der er 4 kommentarer og
1 løsning

Gennemløbe og sammenligne data

Hej,

Jeg har en string, som for eksempel:

bruger1<br>svar1<br>bruger2<br>svar2<br>bruger3<br>svar3<br>

Jeg skal nu bruge en funktion som kigger i denne streng, og finder ud af om der er en bruger som har svaret rigtigt.
Det vil sige, hvis det rigtige svar er "svar2", skal "bruger2" blive returneret.

Jeg bruger Delphi 4.

Håber i kan hjælpe!
Avatar billede arne_v Ekspert
17. april 2004 - 17:32 #1
Det kan sikkert gøres på mange måde.

Mig bud:

procedure findall(s : string; a : string);

var
  ix, ix2 : integer;
  more : boolean;
  s2, olds2 : string;

begin
  ix := 1;
  more := true;
  s2 := '';
  while more do begin
      ix2 := pos('<br>', copy(s, ix, length(s) - ix + 1));
      if ix2 > 0 then begin
        olds2 := s2;
        s2 := copy(s, ix, ix2 - 1);
        if s2 = a then begin
            (* olds2 = bruger med korrekt svar *)
        end;
        ix := ix + ix2 + 3;
      end else begin
        more := false;
      end;
  end;
end;
Avatar billede tuctoh Nybegynder
17. april 2004 - 18:20 #2
Det virker som det skal... bortset fra at programmet crasher hvis den streng den skal søge i er tom.
Kan du smide et check ind i proceduren mod det?

Smid et svar samtidig - det skulle gerne virke perfekt når den bug er klaret :)

Mange tak for hjælpen!
Avatar billede arne_v Ekspert
17. april 2004 - 18:28 #3
Vi ligger vel bare et check ind.

procedure findall(s : string; a : string);

var
  ix, ix2 : integer;
  more : boolean;
  s2, olds2 : string;

begin
  if length(s) > 0 tne begin
    ix := 1;
    more := true;
    s2 := '';
    while more do begin
        ix2 := pos('<br>', copy(s, ix, length(s) - ix + 1));
        if ix2 > 0 then begin
          olds2 := s2;
          s2 := copy(s, ix, ix2 - 1);
          if s2 = a then begin
              (* olds2 = bruger med korrekt svar *)
          end;
          ix := ix + ix2 + 3;
        end else begin
          more := false;
        end;
    end;
  end;
end;
Avatar billede arne_v Ekspert
17. april 2004 - 18:28 #4
Og et svar
Avatar billede tuctoh Nybegynder
17. april 2004 - 18:32 #5
ok, fandt ud af at det ikke var din funktion der gjorde det... sidder et eller andet sted i mit program.
Din funktion virker som den skal :)

Smid et svar, og få points :D

Tak
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

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