| Autor |
Beitrag |
Licki
      
Beiträge: 132
Knoppix, Win 95, Win 2000, Win NT, Win 98, Win XP
Delphi 3
|
Verfasst: Mi 05.11.03 18:12
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
      
Beiträge: 324
|
Verfasst: 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 
      
Beiträge: 132
Knoppix, Win 95, Win 2000, Win NT, Win 98, Win XP
Delphi 3
|
Verfasst: 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
      
Beiträge: 324
|
Verfasst: Mi 05.11.03 18:37
COPY ist Dein Freund.
barfuesser
|
|
Licki 
      
Beiträge: 132
Knoppix, Win 95, Win 2000, Win NT, Win 98, Win XP
Delphi 3
|
Verfasst: 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
      
Beiträge: 324
|
Verfasst: 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 
      
Beiträge: 132
Knoppix, Win 95, Win 2000, Win NT, Win 98, Win XP
Delphi 3
|
Verfasst: Mi 05.11.03 19:20
Dank dir. Aber was ist SrcList und DstList? Diese werden bei mir als undefinierten Bezeichner angezeigt?!
|
|
barfuesser
      
Beiträge: 324
|
Verfasst: 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
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Do 06.11.03 10:38
Hallo Licki und  hier im Delphi-Forum.de
Du musst die Variablen vorher definieren:
Delphi-Quelltext 1: 2: 3:
| Var SrcList, DstList: tStringList; |
Gruß
Tino
|
|
Licki 
      
Beiträge: 132
Knoppix, Win 95, Win 2000, Win NT, Win 98, Win XP
Delphi 3
|
Verfasst: 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
      
Beiträge: 324
|
Verfasst: 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
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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*
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
barfuesser
      
Beiträge: 324
|
Verfasst: Do 06.11.03 17:01
Dann hast Du aber nur den Wert aus der ersten Zeile.
barfuesser
|
|
mimi
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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.
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|