![]() |
strings aus txt file lesen
nochmal guten abend leute...
naja nun zu meinem problem... also ich möchte aus einer txt file mehere strings auslesen, die strings sind getrennt durch einen ':'. ich weiss also immer den ersten teil der stings: bsp: name1: string name2: string name3: string und jetzt möchte ich nur diese strings auslesen, die namen vor dem ':' sind immer die selben !
Code:
was muß ich meiner funktion hinzufügen, damit er mir alle stings (name1-X) ausgibt ?
if s <> '' then
begin KeyPath := s + '\dir\textfile.text; if FileExists(KeyPath) then begin AssignFile(F, KeyPath); Reset(F); ReadLn(f,s) ; // eine split funktion geziehlt auf die werte name1-X CloseFile(F); end; end; danke euch allen .... |
Re: strings aus txt file lesen
wenn du es dir einfach machen willst:
![]() Wenn nicht:
Delphi-Quellcode:
liest alles in eine handliche stringlist im format 'key=value' ein, mit dem du dann nach belieben verfahren kannst.
function getdata(filename:string):TStrings;
var f:textfile; s,s1:string; mark:integer; begin result:=TStirngList.create; assignfile(f,filename); reset(f); while not eof(f) do begin readln(f,s); mark:=pos(':',s); s1:=copy(s,0,mark) + '=' + copy(s,mark+2,length(s)); // key trennzeichen value result.add(s1); end; end; (wobei da auch ein stringreplace('. ','=',[rfReplaceAll]) gereicht hätte :roll: und dann würde ich vom namen(string1,string2,string3) weggehen und mit reinen indizes arbeiten(0,1,2). macht es einfacher, da du dann in die stringlist nur noch value reinschreiben musst. wenn du namen behalten willst, ist der Königsweg TInifile. |
Re: strings aus txt file lesen
du meinst wenn ich als seperator ein = nehme, dann kann ich die wie ini files behandeln ?
|
Re: strings aus txt file lesen
Delphi-Quellcode:
while not EoF(f) do
begin ReadLn(f, s); s := copy(s, pos(':', s)+1, length(s)-pos(':', s)); Memo1.Lines.Add(s); end; Is ungetestet, müsste aber gehen. Musst halt u.U. n bissl mit dem +1 rumspielen, evtl. musst dus vergrößern/verkleinern. //rotes Kästerli?! |
Re: strings aus txt file lesen
aber es gibt ja auch noch ':' die nichts mit diesen strings zu tuen haben ....da macht er das ja dann auch ....kann man nicht noch mehr angeben Name1: also seperator ?
|
Re: strings aus txt file lesen
hmm ne also geht leider nicht :( !
|
Re: strings aus txt file lesen
Aber der erste : ist doch immer zum trennen, oder? Dann klappt es doch mit Pos(), du musst nur bei StringReplace() das rfReplaceAll weglassen, falls du es verwendest, die [] müssen dabei stehenbleiben.
|
Re: strings aus txt file lesen
so ich hab das jetzt fast das ganze wochenende rumgebastelt...und es läuft nicht !
ich hab es gedreht und gewendet wie ich wollte...meine text file sieht so aus: **************************** Head ***************************** Time: 10:55:03 PM Date: 6/25/2005 **************************** DATA **************************** NAME1: wert1 NAME2: wert2 NAME3: wert3 NAME4: wert4 NAME5: wert5 ***************************** End ***************************** und ich brauche die werte hinter den namen ! aber es sind manchmal auch nur 2 namen + werte oder 30 ! jeder wert soll ein extra string werden ....ich brauch die werte in getrennten strings ! erbitte dringend hilfe... thx cu |
Re: strings aus txt file lesen
dann mach es mit inifiles..... :roll:
ansonsten:
Delphi-Quellcode:
reicht dir das? du musst den rückgabewert der funktion natürlich iener variablen zuweisen.
type TTextfile = record
date:string; time:string; Data: array of string; end; function getfile(filename:string):TTextfile; var f:textfile; s:string; begin assingfile(f,filename); reset(f) readln(f,s); //head skippen readln(f,s); //leerzeile skippen readln(f,s); result.date:=copy(s,length('Time: ')+1,length(s)); readln(f,s); result.time:=copy(s,length('Date: ')+1,length(s)); readln(f,s);readln(f,s),readln(f,s); //drei zeilen skippen readln(f,s); while (s<>'') do begin setlength(result.data,length(result.data+1)); result.data(high(result.data)):=s; readln(f,s); end; end; dazu sei noch gesagt, dass das setlength in der schleife unelegant und unperformant ist. und ausserdem hast du jetzt nur immer "namex: wertx" in dem array drin, da solltest du aber wohl mit den tipps, die du bekommen hast, selbst rankmen. |
Re: strings aus txt file lesen
thx ich werde es testen ! auch das mit ini files.... !
|
Re: strings aus txt file lesen
Ne Alternative wäre auch das hier:
Delphi-Quellcode:
Das ganze ist nicht statisch, wenn du also mal was am Layout der TextFile änderst, brauchste das Prog nicht ändern. Außerdem brauchste dann auch kein fixed-size Array, was du bei Änderungen anpassen müsstest, bzw. sparst dir die Arbeit mit SetLength, Length, Low, High etc.
procedure TForm1.Button1Click(Sender: TObject);
var myList : TStringList; myFile : Textfile; temp : String; position : Integer; begin if OpenDialog1.Execute then begin try myList := TStringList.Create; AssignFile(myFile,OpenDialog1.FileName); reset(myFile); while not(EoF(myFile)) do begin readLn(myFile,temp); position := Pos(':',temp); if (position > 0) then myList.Add(trim(Copy(temp,position+1,length(temp)))); end; //Hier einfügen, was auch immer du mit den Daten machen möchtest finally closeFile(myFile); FreeAndNil(myList); end; end; end; Aber wenn du auf ne INI umsteigen kannst, würde ich dir das auch empfehlen, ist einfach schöner. //begin edit Nur mal so nebenbei, was hat denn das mit Multimedia zu tun :gruebel: //end edit |
Re: strings aus txt file lesen
habe mich nach langem testen für die ini version entschieden....
jetzt hab ich ein neues problem: ich habe jetzt meine textfile so aufgebaut: text: balblsbalbblalabjlajblkdsjflkdsf sdslökslökjfklödjfldjfkldjfdlkfj [Data1] VALUE1=Wert1 [Data2] VALUE2=Wert2 [Data3] VALUE3=Wert3 er liesst die werte nicht richtig aus...manchmal komtm einfach nichts...ist vielleicht ein bekanntes ini problem...das hatte ich schonmal bei nem anderen tool.... kann mir da einer helfen ? |
DP-Maintenance
Dieses Thema wurde von "Christian Seehase" von "Multimedia" nach "Sonstige Fragen zu Delphi" verschoben.
Hat nichts mit Multimedia zu tun |
Re: strings aus txt file lesen
Moin Agm,
wenn Du es mit einer Ini-Datei machst könntest Du die Daten so aufbauen: [Head] Time= Date= [Data1] Name1= Name2= ... [Data2] Name1= Name2= Name3= ... Wenn die Werte falsch ausgelesen werden stellt sich mir die Frage: Wie liest Du sie denn? |
Re: strings aus txt file lesen
Ini-Dateien dürfen keine Werte ohne Sektion und Schlüssel beinhalten.
|
Re: strings aus txt file lesen
damn..also kein anderer text darf in die file ?
|
Re: strings aus txt file lesen
Nur als Kommentarzeilen, die beginnen mit einem ;
Fang jetzt aber nicht an, die Kommentarzeilen zur Speicherung zu missbrauchen, da wirst du nicht glücklich mit werden... |
Re: strings aus txt file lesen
wollte nochmal allen danken , die mir geholfen haben ...ist zwar länger her aber ich sehe grade, dass ich nichts mehr dazu geschrieben haben ..also nochmal jungs....danke euch allen !
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:47 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