![]() |
Bestimmte Strings aus einer Datei in StringGrid einlesen
Hallo,
ich bekomme noch nen Koller :wall:, ich habe ein Programm zu schreiben, das bestimmte Strings aus einer *.TXT Datei in ein StringGrid-Gitter einlesen soll. Soweit so gut ^^ Die Datei ist wie folgt aufgebaut: 23:13:24.44122112 PP:2 PP2:3 xD LOL VLC/VXX = 150/77 ... jetzt kommen weitere Zeilen Es soll generell xD, LOL und 150/77 NICHT eingelesen werden.
Delphi-Quellcode:
In diesem Fall soll der String nur in eine Messagebox gepostet werden!var i,int: Integer; int2: String; f: file of Integer; begin AssignFile(f,'rofl.txt'); ReWrite(f); Seek(f,4); // glaube das ist die 5 Stelle ^^ Read(f,int2); ShowMessage((Int2)); CloseFile(f); end; Kann mir jemand bitte helfen? Ich bin gerupft, getert und gefiedert :stupid: wenn ich das nicht bald hinbekomme ^^ Danke für eure Hilfe :thumb: |
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
mit Rewrite(f) überschreibst Du das File.
Zum Lesen öffnet man es mit Reset. Grüße Klaus |
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
unit1.pas(198,13) Error: Incompatible types: got "AnsiString" expected "LongInt"
sry ich bin halt kein Profi-Programmierer, was soll ich da machen? |
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
Delphi-Quellcode:
So ungefähr sollte es gehen.
var
dummy:String; begin AssignFile(f,'rofl.txt'); Reset(f); Seek(f,4); // glaube das ist die 5 Stelle ^^ Read(f,dummy); ShowMessage(dummy); { //voher prüfen ob der String auch eine Zahl ist int2:=StrToInt(dummy); ShowMessage(IntToStr(int2)); } CloseFile(f); end; Bist Du Die sicher, dass das ganze ein File of Integer ist? Oder ist es doch ein Textfile, dann kannst Du aber nicht mit Seek arbeiten. Grüße Klaus |
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
ehrlich gesagt, ich hab keine Ahnung :coder2:
Wie gesagt, die Datei besteht aus aus Strings und Integern. Das ist die aktuelle Fehlermeldung: unit1.pas(197,15) Error: Incompatible types: got "AnsiString" expected "LongInt" |
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
Delphi-Quellcode:
Bei diesem Code kommt da auch die Fehlermeldung?
var
i,int: Integer; int2: String; f: TextFile; data :String; begin AssignFile(f,'rofl.txt'); {$I-} Reset(f); {$I+} if IOResult = 0 then while not eof(f) do begin Readln(f,data); // datenverarbeitung ShowMessage(data); end else // Fehler beim Datei öffnen CloseFile(f); end; Grüße Klaus |
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
Kannst Du die Datei im Notepad öffnen?
Besteht sie aus einzelnen Zeilen? Dann ist es eine Textdatei, die zeilenweise eingelesen werden kann. In jeder Zeile musst Du dann die entsprechenden Elemente suchen und extrahieren. Hier hilft Dir 'Pos' und 'Copy' weiter. |
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
Zitat:
Wie liest man die nächsten Zeilen ein? Zitat:
Zitat:
ThX |
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
Zitat:
TeilString := copy(String,AnfangStelle,EndStelle) AnfangStelle und EndStelle sind vom Typ Integer! pos gibt dir die Stelle des ersten Auftretens eines Teilstrings in einem String wieder. bsp.: position := pos(Teilstring,String); |
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
Moin :-)
Zitat:
Im allgemeinen: 1. In TextFiles werden Integer,Datum etc als String abgespeichert. 2. Ein SEEK(F,n) erwartet für den Parameter n eine Variable vom Typ LongInt, somit dürfte SEEK(F,4) zu Compilerfehler führen... Wie Klaus01 richtig andeutet: komplette Zeile mit ReadLn(f,Data) auslesen und den resultierenden String entsprechend auseinanderpflücken:
Code:
Mehrere Zeilen auslesen:
Teilstring := Copy(data,1,Pos('xD',data)-1);
Code:
...
while not Eof(f) do bein ReadLn(f,data); //... weitere Anweisungen um Data zu extrahieren etc end; |
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
wenn das data ist: 23:13:24.44122112 PP:2 PP2:3 xD LOL VLC/VXX = 150/77
Delphi-Quellcode:
wie die ganze Datei gelesen wird, steht schon im letzten post von mir.
teil1 := copy(data,1,pos('xD',data)));
teil2 := copy(data,pos('LOL',data)+3,pos('=',data))); Grüße Klaus |
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
um dich ein wenig mehr zu verwirren ;o)
es gibt mehrere Möglichkeiten die Daten zu laden hier eine weitere:
Delphi-Quellcode:
Grüße
procedure readData;
var sl: TStringlist; i : Integer; begin sl:= TStringlist.Create; // datei einlesen if FileExists('rofl.txt') then sl.LoadFromFile('rofl.txt'); for i:= 0 to sl.Count-1 do begin // Datenverarbeitung; // sl.Strings[i] end; sl.Free; end; Klaus [edit] ein wenig am Code geändert [/edit] |
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
Servus,
danke für eure Hilfe, hier ist der aktuelle Quelltext
Code:
Der Quelltext ist nicht fertig, ich änder ihn wenn wir das hier geschafft haben:
procedure TForm1.Button1Click(Sender: TObject);
var sl: TStringlist; Teilstring: String; teil1, teil2: String; i : Integer; begin sl:= TStringlist.Create; try if Opendialog1.execute then begin sl.LoadFromFile(Opendialog1.Filename); Teilstring := sl[1]; label1.caption := Teilstring; teil1 := copy(Teilstring,1,pos('xD',Teilstring))); teil2 := copy(Teilstring,pos('LOL',data)+3,pos('=',Teilstring))); for i:= 0 to sl.Count-1 do begin // Datenverarbeitung; // sl.Strings[i] end; end; except ShowMessage ('Super!'); end; sl.Free; end; Das Problem ist, dass es nicht immer ein "xD" in der Datei gibt, die Werte stehen aber immer an einer Stelle pro Zeile. Nochmal ein paar Zeilen: 23:13:24.44122112 PP:2 PP2:3 xD LOL VLC/VXX = 150/77 24:13:25.78945612 Pi:3 PP2:4 xD LOL VLY/VYX = 150/77 25:15:27.78985612 Pu:3 PP4:5 xD LOL VLF/FYX = 150/77 Wie liest man das nun ein(also die ZeilenStelle ...)? ThX :dp: Ich bin für jede Hilfe dankbar, muss das heute beenden ! |
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
Hallo.
Wenn du dein Problem nicht so gut beschreiben kannst, dann musst du die Daten beschreiben. Für die Eingabedaten hast du drei Zeilen angegeben. Im Titel deines threads schreibst du, dass du die Zeichenkette in ein StringGrid einlesen möchtest. Wähle also ein paar gute Eingabebeispiele, und zeige was du als Ergebnis erwartest:
Code:
Wenn du dann noch die richtigen Erläuterungen (Regelfälle, Ausnahmen) dazu gibst, dann kannst du dich vor Hilfe bestimmt nicht mehr retten.
Eingabe:
23:13:24.44122112 PP:2 PP2:3 xD LOL VLC/VXX = 150/77 24:13:25.78945612 Pi:3 PP2:4 xD LOL VLY/VYX = 150/77 25:15:27.78985612 Pu:3 PP4:5 xD LOL VLF/FYX = 150/77 Ausgabe: Uhrzeit? | P1 | P2 | V/F 23:13:24.44122112 | PP:2 | PP2:3 | VLC/VXX 24:13:25.78945612 | Pi:3 | PP2:4 | VLY/VYX 25:15:27.78985612 | Pu:3 | PP4:5 | VLF/FYX Grüße vom marabu |
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
tschuldigund so, wie du es beschreibst, meinte ich das .... :oops:
|
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
Hi!
Sind die Zeilen von der Länge der einzelnen Bestandteile her immer gleich lang und steht da immer LOL xD dazwischen? Ciao Frederic |
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
die Zeilen sind immer gleichlang, die einzelnen Bestandteile auch, LOL und xD sind in jeder Zeile dazwischen ....
Edit: Ich habs ^^
Code:
Danke für eure Hilfe, ohne euch hät ich das nicht geschafft ! :party:
Froide:=Copy(Teilstring,12,5); // von der Stelle 12 an, 5 weitere Stellen
|
Re: Bestimmte Strings aus einer Datei in StringGrid einlesen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var sl: TStringlist; Teilstring: String; datum,p1,p2,vf: String; i : Integer; begin sl:= TStringlist.Create; try if Opendialog1.execute then begin sl.LoadFromFile(Opendialog1.Filename); for i:= 0 to sl.Count-1 do begin Teilstring := sl[1]; label1.caption := Teilstring; datum := copy(Teilstring,1,17); p1:=copy(teilstring,19,4); p2:=copy(teilstring,24,5); vf:=copy(teilstrig,37,16); showMessage(datum+' '+p1+' '+p2+' '+vf); end; end; except ShowMessage ('Super!'); end; sl.Free; end; Zitat:
mit pos arbeiten. Du kannst die Bereiche die Dich intessieren auch direkt im copy angeben. Grüße Klaus [edit] zu spät :o( [/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz