Autor Beitrag
Licki
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 132

Knoppix, Win 95, Win 2000, Win NT, Win 98, Win XP
Delphi 3
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 132

Knoppix, Win 95, Win 2000, Win NT, Win 98, Win XP
Delphi 3
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: Mi 05.11.03 18:37 
Suche in: Delphi-Forum, Delphi-Library COPY ist Dein Freund.
barfuesser
Licki Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 132

Knoppix, Win 95, Win 2000, Win NT, Win 98, Win XP
Delphi 3
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: Mi 05.11.03 19:14 
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 132

Knoppix, Win 95, Win 2000, Win NT, Win 98, Win XP
Delphi 3
BeitragVerfasst: Mi 05.11.03 19:20 
Dank dir. Aber was ist SrcList und DstList? Diese werden bei mir als undefinierten Bezeichner angezeigt?!
barfuesser
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: Do 06.11.03 08:28 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Do 06.11.03 10:38 
Hallo Licki und :welcome: hier im Delphi-Forum.de

Du musst die Variablen vorher definieren:
ausblenden Delphi-Quelltext
1:
2:
3:
Var
  SrcList,
  DstList: tStringList;

Gruß
Tino
Licki Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 132

Knoppix, Win 95, Win 2000, Win NT, Win 98, Win XP
Delphi 3
BeitragVerfasst: Do 06.11.03 13:22 
Habe nun eine Weile herumprobiert und herumgesucht nun habe ich dies:


ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: Do 06.11.03 13:31 
Du darfst DstList erst freigeben, wenn Du es nicht mehr benötigst. Also in Deinem Fall:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Do 06.11.03 16:52 
also ich würde das so lösen:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: Do 06.11.03 17:01 
Dann hast Du aber nur den Wert aus der ersten Zeile.

barfuesser
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: 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...."