Avatar billede picard Nybegynder
30. januar 2001 - 15:33 Der er 6 kommentarer og
3 løsninger

Hent 6 forskellige strenge ud af en streng

HEjsa

Jeg skal hente 6 forskellige strenge udaf en streng:

De seks forskellige strenge er adskilt af et \"/\" tegn, og de kan være af forskellige længder. Er der er en smart måde hvorpå dette kan løses ?

De seks strenge skal placeres i hver deres variabel !

En strenge kan se ud som følger :
  108/639,13/852,17/72,1/72,1/72,1

hvor de seks strenge er :
108 639,13 852,17 72,1 72,1 72,1

mvh
Christian


Christian
Avatar billede borrisholt Novice
30. januar 2001 - 15:43 #1
prøv den her :

function StrToc(var s : String; TokenNizer : char) : String;
var
  i : Integer;
begin
  Result := \'\';
  if Length(s) = 0 then
    exit;
  i := pos(TokenNizer,s);
  if i = 0 then
  begin
    Result := s;
    s:=\'\';
    exit;
  end
  else
  begin
    Result := copy(s,1,i-1);
    Delete(s,1,i);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  s : String;
begin
  s:= \'108/639,13/852,17/72,1/72,1/72,1\';

  while s <> \'\' do
    Memo1.Lines.Add(StrToc(s,#47));
end;


Jens B
Avatar billede snowball Novice
30. januar 2001 - 15:47 #2
Sådan her kan det gøres !

var
  col, i: integer;
  input, str1, str2, str3, str4, str5, str6: String;
begin
  input := \'12/34/567/890/111/909\';
  col := 1;
  for i := 1 to length(input) do begin
    if input[i] = \'/\' then
      inc(col)
    else
      begin
        case col of
          1 : str1 := str1 + input[i];
          2 : str2 := str2 + input[i];
          3 : str3 := str3 + input[i];
          4 : str4 := str4 + input[i];
          5 : str5 := str5 + input[i];
          6 : str6 := str6 + input[i];
        end;
      end;
  end;
  label1.caption := str1;
  label2.caption := str2;
  label3.caption := str3;
  label4.caption := str4;
  label5.caption := str5;
  label6.caption := str6;
end;


Snowball
Avatar billede snowball Novice
30. januar 2001 - 15:49 #3
hhmm..lidt for langsom ;)

Snowball
Avatar billede delphi Nybegynder
30. januar 2001 - 15:49 #4
Den er der vist flere meninger om, men nu hart jeg lavet et svar, så skal det dæleme også postes!

procedure TForm1.Button1Click(Sender: TObject);
Const
  InStr = \'108/639,13/852,17/72,1/72,1/72,1\';

Var
  OutArr : Array[1..6] Of Double;
  aStr  : String;
  Index  : Integer;
begin
  aStr  := InStr;

  For Index := 1 To 6 Do
    If Pos(\'/\', aStr)>0 Then
      Begin
        OutArr[Index] := StrToFloat(Copy(aStr, 0, Pos(\'/\', aStr)-1));
        Delete(aStr, 1, Pos(\'/\', aStr));
      End
    Else
      OutArr[Index] := StrToFloat(aStr);
end;


Peter
Avatar billede snowball Novice
30. januar 2001 - 15:53 #5
Tjaa, det beviser jo bare at de fleste ting kan gøres på mange måder. Så er det jo bare op til picard og bestemme hvilken en af dem han vil bruge ;)

Snowball
Avatar billede delphi Nybegynder
30. januar 2001 - 15:58 #6
Jeps

Jeg ser lige at output skal være som strenge.  Jeg udlæste til Reals (Doubles, men den diskusion har vi haft).  Output som strenge er lidt simplere, så jeg modificerer lige min kode...

Const
  InStr = \'108/639,13/852,17/72,1/72,1/72,1\';
  DelStrCount = 6;

Var
  OutArr : Array[1..DelStrCount] Of String;
  aStr  : String;
  Index  : Integer;
begin
  aStr  := InStr;
  Index := 1;

  While Pos(\'/\', aStr)>0 Do
    Begin
      OutArr[Index] := Copy(aStr, 0, Pos(\'/\', aStr)-1);
      Delete(aStr, 1, Pos(\'/\', aStr));
      Inc(Index);
    End;
  OutArr[Index] := StrToFloat(aStr);
end;

Så ændrede jeg lige koden, så det ikke er så bundet af at der er 6 delstrenge i inputtet.

(Dette er ikke afprøvet..men mon ikke det compiler?)

Peter
Avatar billede picard Nybegynder
30. januar 2001 - 17:42 #7
Takker, tjekker svarene.
Skal lige lave koden om til VB - de er sq ikke for hurtige ind i Visual Basic forumet.  :o) Så jeg stillede spgm. her *g*

christian
Avatar billede delphi Nybegynder
31. januar 2001 - 08:55 #8
Jamen vi er bare så go\'e her i Delphi \"rummet\"....
Avatar billede picard Nybegynder
06. februar 2001 - 13:58 #9
Så var der noget til alle :o)

Takker for hjælpen
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