Avatar billede hite Nybegynder
19. april 2002 - 15:36 Der er 7 kommentarer og
1 løsning

Importering af tabeller

Hej alle.
Jeg skal have importeret nogle tabeller fra nogle tekstfiler med formatet:

0.000    0.605    1.182    0.000    1.523    1.274

sådan ser en række ud og der er som regel 200 stk. Jeg har erklæret en record:
type

    Tdata = Record

    length:cardinal;

    x:array[0..500] of extended;

    y:array[0..500] of extended;

    end;
jeg vil meget gerne have anden kolonne, tredje, femte og sjette kolonne læst ind i en variabel:
data:Tdata;

data.length kan jeg selv finde ud af at lave .
Med venlig hilsen Rasmus
Avatar billede hermandsen Juniormester
19. april 2002 - 15:43 #1
Hent en linie ind med ReadLn.

var
  S: String;
  F: TextFile;
begin
  AssignFile(F, 'C:\test.txt');
  FileMode := 0;
  Reset(F, 1);
  while not Eof do
  begin
    ReadLn(F, S);
    //Her manipulerer du med hele strengen og lægger den ind i dit array.
  end;
  CloseFile(F);
end;

//hermandsen
Avatar billede hermandsen Juniormester
19. april 2002 - 15:45 #2
Hvordan er din tabel forresten opbygget?
Sådan:

0.4334 2.4323 9.2342 23.233 .......
1.4345 7.2353 9.2324 1.2434 .......
6.5433 9.4343 0.2323 2.2343 .......

Eller???
Avatar billede hite Nybegynder
19. april 2002 - 16:11 #3
Det er netop den det hvor du skrive Her manipulerer du med hele strengen og lægger den ind i dit array som jeg gerne vil have dig til at vise mig. Resten kunne jeg i forvejen.
Den øverste linie i tekstfilen ser således ud:
0.000    0.605    1.182    0.000    1.523    1.274
Tallene er adskilt af et tabulationsskift.
Avatar billede hite Nybegynder
19. april 2002 - 16:12 #4
0.000    0.605    1.182    0.000    1.988    1.274
1.000    0.645    1.218    1.000    1.523    1.274
2.000    0.708    1.588    2.000    1.123    1.274
3.000    0.645    1.123    3.000    2.503    1.274
...
Avatar billede hite Nybegynder
19. april 2002 - 16:13 #5
det var vist det du spurgte om
Avatar billede hermandsen Juniormester
19. april 2002 - 17:36 #6
Prøv at kigge på Pos funktionen...

var
  S: String;
  I: Integer;
begin
  I := Pos(#09, S);
end;

Pos returnerer positionen på det første tabulator-tegn den støder på i streng s. Så kan du bruge Copy til resten...

Copy(S, 0, I);

var
  S, temp: String;
  I: Integer;
begin
  temp := S;
  while I <> 0 do
  begin
    I := Pos(#09);
    temp := Copy(S, 0, I);
    temp := Copy(S, I+1, Lenght(S));
  end;
end;


Jeg er ikke 100% sikker på den... Det kan godt være at du skal lægge lidt til Pos-funktionen... Jeg har altid problemer med om den nu tager tegnet før, efter eller det tegn man har peget på... Prøv dig lidt frem, og vær ikke bange for at prøve igen! :)

//hermandsen
Avatar billede hite Nybegynder
09. maj 2002 - 13:29 #7
fik det ikke helt til at virke, men nu er opgaven afleveret .. tak for hjælpen
Avatar billede hermandsen Juniormester
09. maj 2002 - 13:35 #8
Hehe... Velbekomme! :)
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