Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi strings aus txt file lesen (https://www.delphipraxis.net/48412-strings-aus-txt-file-lesen.html)

agm65 24. Jun 2005 21:24


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:
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;
was muß ich meiner funktion hinzufügen, damit er mir alle stings (name1-X) ausgibt ?



danke euch allen ....

DGL-luke 24. Jun 2005 23:04

Re: strings aus txt file lesen
 
wenn du es dir einfach machen willst: Delphi-Referenz durchsuchenTIniFile

Wenn nicht:

Delphi-Quellcode:
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;
liest alles in eine handliche stringlist im format 'key=value' ein, mit dem du dann nach belieben verfahren kannst.
(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.

agm65 24. Jun 2005 23:12

Re: strings aus txt file lesen
 
du meinst wenn ich als seperator ein = nehme, dann kann ich die wie ini files behandeln ?

Ultimator 24. Jun 2005 23:13

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?!

agm65 24. Jun 2005 23:18

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 ?

agm65 24. Jun 2005 23:28

Re: strings aus txt file lesen
 
hmm ne also geht leider nicht :( !

scp 24. Jun 2005 23:46

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.

agm65 26. Jun 2005 20:58

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

DGL-luke 26. Jun 2005 21:10

Re: strings aus txt file lesen
 
dann mach es mit inifiles..... :roll:

ansonsten:

Delphi-Quellcode:
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;
reicht dir das? du musst den rückgabewert der funktion natürlich iener variablen zuweisen.

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.

agm65 26. Jun 2005 21:13

Re: strings aus txt file lesen
 
thx ich werde es testen ! auch das mit ini files.... !


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:51 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz