![]() |
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.... !
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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