Entwickler-Ecke
Dateizugriff - bestimmten Wert auslesen
Licki - Mi 05.11.03 18:12
Titel: bestimmten Wert auslesen
Hallo...
Ich habe eine Datei in folgendem Format:
F0F0F0F3 F3F0F8F0 F8F1F1F8 F5F1F0F0 F0F0F0F0 F0F3F4F5 F8F0F9F9 F7F0F0F0 *000330808236210000000034580997000*
So und nun möchte ich das fettgedruckte auslesen. Einfach wiedergeben, in einem Textfeld etc., egal, einfach nur ausgeben. Wie funktioniert dies?
Danke im Vorraus.
Licki
barfuesser - Mi 05.11.03 18:30
Beschreib mal ein bisschen genauer, was Du möchtest. Suchst Du immer Teile, die einem bestimmten Muster entsprechen oder willst Du immer die 4 Zeichen ab der Position sowieso oder was?
barfuesser
Licki - Mi 05.11.03 18:33
Ja, genau. Ich suche die 4 Zeichen immer an der selben Position. Der Inhalt der Datei verändert sich zwar immer, aber die Zeichen stehen immer an genau der selben Position. Und diese 3 Zeichen möchte ich auslesen. Habe leider kein Plan wie.
barfuesser - Mi 05.11.03 18:37
COPY ist Dein Freund.
barfuesser
Licki - Mi 05.11.03 19:05
Kannst du mir eventuell dazu Code posten, dass wäre nett. Habe mir im Forum schon Beiträge dazu angeschaut. Komme damit aber nicht klar. Ich habe mir gedacht, dass ich die Datei mit TFileStream öffne und dann dort eben diese 4 Zeichen auslesen... Ist aber doch schwieriger als gedacht. :(
barfuesser - Mi 05.11.03 19:14
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| if not FileExists(FileName) then Exit; SrcList := TStringList.Create; DstList := TStringList.Create; SrcList.LoadFromFile(FileName); if SrcList.Count > 0 then for i:=0 to SrcList.Count - 1 do DstList.Append(Copy(SrcList[i], 77, 4)); SrcList.Free; doSmethingWithDstList; DstList.Free; |
in DstList stehen dann die Werte drin.
barfuesser
Licki - Mi 05.11.03 19:20
Dank dir. Aber was ist SrcList und DstList? Diese werden bei mir als undefinierten Bezeichner angezeigt?!
barfuesser - Do 06.11.03 08:28
Delphi-Quelltext
1:
| SrcList := TStringList.Create; |
sollte einem doch sagen, daß es sich dabei nur um eine TStringList handeln kann. Und das man Variablen vorher vereinbaren muß, sollte Dir auch bekannt sein. Ansonsten solltest Du Dich vielleicht erst einmal mit den Grundlagen der Delphi-Programmierung beschäftigen.
barfuesser
Tino - Do 06.11.03 10:38
Hallo Licki und :welcome: hier im Delphi-Forum.de
Du musst die Variablen vorher definieren:
Delphi-Quelltext
1: 2: 3:
| Var SrcList, DstList: tStringList; |
Gruß
Tino
Licki - Do 06.11.03 13:22
Habe nun eine Weile herumprobiert und herumgesucht nun habe ich dies:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Button1Click(Sender: TObject); var SrcList, DstList: tStringList; i : Integer; begin if not FileExists('C:\WINDOWS\Desktop\Unbenannt.txt') then Exit; SrcList := TStringList.Create; DstList := TStringList.Create; SrcList.LoadFromFile('C:\WINDOWS\Desktop\Unbenannt.txt'); if SrcList.Count > 0 then for i :=0 to SrcList.Count - 1 do DstList.Append(Copy(SrcList[i], 77, 4)); SrcList.Free; DstList.Free; Label1.Caption:=DstList[i]; end; |
Nun sollte doch auf dem Label1 das Ergebnis seien, oder? Stattdesen bekomme ich von Delphi diese Meldung: "Der Index der Liste Überschreitet das Maximum".
Kann jemand helfen? :(
barfuesser - Do 06.11.03 13:31
Du darfst DstList erst freigeben, wenn Du es nicht mehr benötigst. Also in Deinem Fall:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Button1Click(Sender: TObject); var SrcList, DstList: tStringList; i: Integer; begin if not FileExists('C:\WINDOWS\Desktop\Unbenannt.txt') then Exit; SrcList := TStringList.Create; DstList := TStringList.Create; SrcList.LoadFromFile('C:\WINDOWS\Desktop\Unbenannt.txt'); if SrcList.Count > 0 then for i :=0 to SrcList.Count - 1 do DstList.Append(Copy(SrcList[i], 77, 4)); SrcList.Free; Label1.Caption:=DstList[0]; DstList.Free; end; |
Außerdem solltest Du nur innerhalb der For-Schleife mit i arbeiten.
barfuesser
mimi - Do 06.11.03 16:52
also ich würde das so lösen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function getW:String; var DI:TStrings str:=String; begin DI:=TStringList.Create; DI.LoadFromFile(FIleName); str:=Copy(di.strings[0],Pos('*',di.strings[0])+3,srLen(Pchar(di.strings[0])));; result:=str end; |
könnte fehler erhalten, habe das ebend aus dem kopf geschrieben.
sollte aber funktionieren.
wenn die größe gleichbleibt und das * immer an der selben position ist, sollte diese funktion funktionieren *G*
barfuesser - Do 06.11.03 17:01
Dann hast Du aber nur den Wert aus der ersten Zeile.
barfuesser
mimi - Do 06.11.03 18:46
reicht doch auch oder nicht?
oder steht in diese datei nur so ein kram drin und er möchte alle werte haben?
davon hat er nichts geschrieben, oder doch ?
und wenn:
einfach eine forschleife nehmen und fertig.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!