Avatar billede mmfrandsen Nybegynder
08. november 2003 - 15:48 Der er 5 kommentarer og
1 løsning

Læs linje fra stringlist fra et bestemt punkt

Jeg har læst en .txt fil ind i en stringlist, og derfra bruger jeg så:
"strteam1 :=slferrari[2];"

Men... i stedet for, at skulle skrive det eksakte linje nummer, hvil jeg gerne have programmet til, at kunne søge efter:
;type *(* = noget tekst den skal ignorere)
7

Og så kopiere teksten 2 linjer under 7 tallet i noget lignende den her: "strteam1 :=slferrari[2];"

Derefter skal den kunne søge efter den næste linje med:
;type *(* = noget tekst den skal ignorere)
7

Og så gentage nummeret fra før.

Er det muligt - og hvordan... Jeg håber, der er nogen som kan svare mig.
På forhånd tak, MM
Avatar billede dkn Nybegynder
08. november 2003 - 17:28 #1
hvis du nu har et lille stykke tekst som er sat op på den måde ville det være rart at se det...
Avatar billede dkn Nybegynder
08. november 2003 - 18:18 #2
er det sådan her ca:

;type *(* = noget tekst den skal ignorere)
7


Det som der skal ud



;type *(* = noget tekst den skal ignorere)
7


Noget andet som skal med ud
Avatar billede dkn Nybegynder
08. november 2003 - 18:27 #3
så kunne det ihvertefald se sådan her ud:


procedure TForm1.Button1Click(Sender: TObject);
var
  st, Result        : tstringlist;
  i                : integer;
begin
  st := tstringlist.Create;
  st.LoadFromFile('test.txt');

  Result := tstringlist.Create;

  for I := 0 to st.Count - 1 do
  begin
    if pos(';type', st.Strings[I]) <> 0 then // Fandt ;type
      if I + 4 <= st.Count - 1 then    // Sikker på at der er tekst nok
        Result.Add(st.Strings[I + 4]);
  end;

  memo1.Lines := Result;

  Result.Free;
  st.Free;
end;


Men jeg ved ikke om det kun er hvis der er et 7 tal under type at den skal ud, men det må du jo lige finde ud af.
Avatar billede mmfrandsen Nybegynder
08. november 2003 - 18:49 #4
Tjaa... Det ser godt ud, men der mangler vist stadig noget med 7 tallet... Anyway, her plukker jeg lige det tekst ud som jeg snakker om:

;type************DRIVER - JARNO TRULLI************************
7
;fName
2
Jarno Trulli
;FAge
3
26
;fNationality
4
7

Det jeg så gerne vil have programmet til er, at:
1. Lede hele filen igennem og når den så finder denne linje (Den skal være ligeglad med alle stjernerne og "DRIVER - JARNO TRULLI":
;type************DRIVER - JARNO TRULLI************************
7

2. Derfra skal jeg så kunne fortælle den, at den skal gå 2 linjer ned fra 7 og plukke den linje ud og gå 4 linjer ned og plukke den ud osv.
Avatar billede dkn Nybegynder
08. november 2003 - 18:54 #5
okay nu tager den kun dem med type 7:



procedure TForm1.Button1Click(Sender: TObject);
var
  st, Result        : tstringlist;
  i                : integer;
begin
  st := tstringlist.Create;
  st.LoadFromFile('test.txt');

  Result := tstringlist.Create;

  for I := 0 to st.Count - 1 do
  begin
    if pos(';type', st.Strings[I]) <> 0 then // Fandt ;type
      if I + 4 <= st.Count - 1 then    // Sikker på at der er tekst nok
        if st.Strings[I + 1] = '7' then
          Result.Add(st.Strings[I + 4]);
  end;

  memo1.Lines := Result;

  Result.Free;
  st.Free;
end;
Avatar billede mmfrandsen Nybegynder
08. november 2003 - 23:05 #6
Der var den... Mange 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
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