07. februar 2003 - 22:22Der er
16 kommentarer og 1 løsning
Adskille tekst ved komma???
Jeg har en tekst fil, den ser sådan ud: ML,34041202,113,20020115,20020116,2425,00000,5004,+,000001326425 ML,34041202,113,20020115,20020116,2425,00000,5019,+,000000190300
Det er kun nogle af værdierne jeg skal bruge, f.eks efter det 7. komma i første linje (5004), men hvordan får jeg tekstfilen skilt ad??
var i : Integer; RUNNING : boolean; str, str_1 : String; begin
Str := Edit1.Text; while (RUNNING) do begin i:=pos(',',Str); if (i<>0) then begin Str_1 := Trim(Copy(Str,1,i-1)); Delete(Str,1,i); Memo1.Lines.Add(Str_1); end else begin if (Length(Str) > 0) then begin Str_1 := Trim(Str); Delete(Str,1,Length(Str)); Memo1.Lines.Add(Str_1); end;
Kan du selv tilpasse det til dit behov? ellers skal jeg lige have at vide hvad det præcist skal gøre, ud over at dele mellem kommaer. Du kan evt. smide de splittede dele i et array e.l. og derefter behandle hver enkelt stykke.
var i : Integer; RUNNING : boolean; str, str_1 : String;
F : TextFile; Buffer : String;
strArray : Array of String; begin SetLength(strArray,0);
AssignFile(F,'C:\exp.txt'); Reset(F); While NOT EOF(F) do begin ReadLn(F,Buffer);
Str := Buffer; RUNNING := TRUE;
while (RUNNING) do begin i:=pos(',',Str); if (i<>0) then begin Str_1 := Trim(Copy(Str,1,i-1)); Delete(Str,1,i);
SetLength(strArray,Length(strArray)+1); strArray[High(strArray)] := str_1; end else begin if (Length(Str) > 0) then begin Str_1 := Trim(Str); Delete(Str,1,Length(Str));
AssignFile(F,'C:\exp.txt'); Reset(F); While NOT EOF(F) do begin ReadLn(F,Buffer); Inc(AntalLinier);
Str := Buffer; RUNNING := TRUE;
while (RUNNING) do begin i:=pos(',',Str); if (i<>0) then begin Str_1 := Trim(Copy(Str,1,i-1)); Delete(Str,1,i);
SetLength(strArray,Length(strArray)+1); strArray[High(strArray)] := str_1; end else begin if (Length(Str) > 0) then begin Str_1 := Trim(Str); Delete(Str,1,Length(Str));
//Kun til lige at teste, alle bliver skrevet ud her. //for i:=0 to High(strArray) do begin //Memo1.Lines.Add(strArray[i]); //end; //-------------
//--------------- //Starter ved de valgte nedenfor //ligger derefter 10 til, fortsætter indtil alle linier er kørt igennem. v1 := 3; v2 := 4; v3 := 7; v4 := 9; for i:=1 to AntalLinier do begin Memo1.Lines.Add(strArray[v1]); Memo1.Lines.Add(strArray[v2]); Memo1.Lines.Add(strArray[v3]); Memo1.Lines.Add(strArray[v4]); v1 := v1 +10; v2 := v2 +10; v3 := v3 +10; v4 := v4 +10; end; //-------------
procedure TForm1.FormCreate(Sender: TObject); var Fil: TextFile; Str, CommaStr: String; begin AssignFile(Fil, 'C:\exp.txt'); Reset(Fil); if not EOF(Fil) then ReadLn(Fil, CommaStr);
while not EOF(Fil) do begin ReadLn(Fil, Str); CommaStr := CommaStr + ',' + Str; end; CloseFile(Fil); CommaStrList := TStringList.Create; CommaStrList.CommaText := CommaStr; Caption := CommaStrList[7]; //5004 end;
procedure TForm1.FormDestroy(Sender: TObject); begin CommaStrList.Free; end;
Synes godt om
Ny brugerNybegynder
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.