Avatar billede stefmeister Nybegynder
28. april 2004 - 21:41 Der er 5 kommentarer og
1 løsning

Fang teksten

Hej

Jeg vil gerne kunne fange en tekst og nogle tal. Altså hvis jeg i en Edit skriver: 12log50 så skal den smide 12 ned i en variable og smide log ned i en variabel og smide 50 ned i en varibel. Nogen der ved hvordan det skal gøres?


/Steffen.
Avatar billede angelod Novice
28. april 2004 - 21:48 #1
Taler vi om et kendt eller ukendt format? Altså vil det altid være det samme antal tal-variabler?
Avatar billede hrc Mester
29. april 2004 - 00:13 #2
Det er vel noget med at veksle mellem tal og bogstaver og banke klumperne ind i en TStringList og behandle det derefter.

Hvad med at bruge rpn-syntaksen? Det er en meget let syntaks at programmere og man vænner sig meget let til at regne på denne måde (HP's regnere er toppen!)

Har ikke tid til et eksempel lige nu, men skriv om jeg kan hjælpe.
Avatar billede borrisholt Novice
29. april 2004 - 08:40 #3
Du kan læse fra venstre mod højre så længe det er et tal der står der så læs næste karekter også. Put dem over i en streng et for et, konveter den streng til et tal og vupti har du første tag.

Således fortsætter du.

Jens B
Avatar billede hrc Mester
29. april 2004 - 09:04 #4
Jeg sad lige og bryggede dette eksempel sammen. Der er en TEdit (eText), TButton (btnTest) og en TListBox (lbResult)

Knappen kalder funktionen ParseText der lægger delene ind i en TStrings som du kan gennemløbe. Håber du kan bruge eksemplet

type
  TCharTypes = (ctChar, ctNumber);

procedure TfrmMain.btnTestClick(Sender: TObject);
begin
  ParseString(eText.Text,lbResult.Items);
end;

procedure TfrmMain.ParseString(aString: string; aStringList: TStrings);
var
  ch : char;
  st : string;
  i : integer;
  PrevCharType, CharType : TCharTypes;
begin
  if length(aString) = 0 then
    exit;

  aStringList.BeginUpdate;
  try
    PrevCharType := TCharTypes(aString[1] in ['0'..'9']); // måske også '-','+'?
    for i := 1 to length(aString) do begin
      ch := aString[i];
      CharType := TCharTypes(ch in ['0'..'9']); // måske også '-','+'?
      if PrevCharType = CharType then
        st := st + ch
      else begin // Der er sket et skift, gem streng og start på ny
        aStringList.Add(st);
        st := ch;
        PrevCharType := CharType;
      end;
    end;
    aStringList.Add(st);
  finally
    aStringList.EndUpdate;
  end;
end;
Avatar billede stefmeister Nybegynder
29. april 2004 - 21:22 #5
hrc >>

Hvordan virker den?
Den brokker sig over:
Undeclared identifer: 'ParseString'
Undeclared identifer: 'eText'
osv.


/Steffen.
Avatar billede stefmeister Nybegynder
03. maj 2004 - 08:22 #6
det virker.
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