AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

untypisierte dateien

Ein Thema von khh · begonnen am 7. Apr 2010 · letzter Beitrag vom 9. Apr 2010
Antwort Antwort
Seite 3 von 4     123 4      
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#21

Re: untypisierte dateien

  Alt 8. Apr 2010, 10:43
Zitat:
wie sieht eigentlich die Definition von Datensatz aus?
die gibts leider nicht

[edit=mkinzler]Tag gefixt Mfg, mkinzler[/edit]
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#22

Re: untypisierte dateien

  Alt 8. Apr 2010, 11:06
@DeddyH
Danke! war mir entfallen.

Zitat von khh:
ich hab jetzt
mit:

Delphi-Quellcode:
    read(f,datensatz);
    test:=datensatz.zeile;
    name := datensatz.name;
    oemtochar(PChar(test),PChar(test2));
    oemtochar(PChar(name),PChar(name2));
Hiernach hatte ich angenommen, daß "Datensatz" ein Record sei?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#23

Re: untypisierte dateien

  Alt 8. Apr 2010, 11:25
Zitat von p80286:
@DeddyH
Danke! war mir entfallen.

Zitat von khh:
ich hab jetzt
mit:

Delphi-Quellcode:
    read(f,datensatz);
    test:=datensatz.zeile;
    name := datensatz.name;
    oemtochar(PChar(test),PChar(test2));
    oemtochar(PChar(name),PChar(name2));
Hiernach hatte ich angenommen, daß "Datensatz" ein Record sei?

Gruß
K-H
ist ja auch richtig
ich hab einfach einen Record definiert, insgesamt 1024 byte gross,
habe die einzelnen Werte die ich brauche definiert(sieht man ja im File wo die stehen, und den Rest wie zb "zeile" gelesen und "weggeworfen".
Leider funktioniert das so nicht, wie ich schon oben erwähnte.

test habe ich nur testweise gelesen um zu sehen was nach oemtochar "rüberkommt".
Endgültig brauche ich nur artnr bezeichnung und preis, welche an festen Stellen im DS stehen.


also datensatz.name 25 byte gross, datensatz.nr 3 byte gross und datensatz.preis 8 byte gross.
Karl-Heinz
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#24

Re: untypisierte dateien

  Alt 8. Apr 2010, 12:41
Zitat von p80286:
Delphi-Quellcode:
type
  tMyrecord = packed record
       f1 : array [0..$4A] of byte;
       name : array [$4B..$63] of char;
       trenn1: byte;
       rest : array [$65..$3FF];
   end;

var
  buffer : array [0..1023] of char;
  myrecord : tMyrecord absolute buffer;
  gelesen : integer;
...
fs:=tfilestream.create(.......);
gelesen:=fs.read(buffer,sizeof(buffer));
...
und dann entweder im Debugger anschauen was in dem Record steht, oder eine Printausgabe machen oder
ich komme der Sache näher, so funktionierts "fast"

bis auf die Umlaute krieg ich die richtige Bezeichnung, aber oemtochar bringt leider nix
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#25

Re: untypisierte dateien

  Alt 8. Apr 2010, 13:03
Ich hab mal alles bis auf die Bezeichnung aus der Datei rausgeworfen und mit folgendem Code getestet:
Delphi-Quellcode:
var sl: TStringlist;
    s: string;
begin
  sl := TStringlist.Create;
  try
    sl.LoadFromFile('E:\muster.txt');
    s := sl[0];
    OemToChar(PChar(s),PChar(s));
    ShowMessage(s);
  finally
    sl.Free;
  end;
end;
Sieht einwandfrei aus (siehe Anhang).
Miniaturansicht angehängter Grafiken
ausgabe_194.jpg  
Angehängte Dateien
Dateityp: txt muster_106.txt (18 Bytes, 6x aufgerufen)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#26

Re: untypisierte dateien

  Alt 8. Apr 2010, 13:46
Zitat von DeddyH:
Ich hab mal alles bis auf die Bezeichnung aus der Datei rausgeworfen und mit folgendem Code getestet:
Delphi-Quellcode:
var sl: TStringlist;
    s: string;
begin
  sl := TStringlist.Create;
  try
    sl.LoadFromFile('E:\muster.txt');
    s := sl[0];
    OemToChar(PChar(s),PChar(s));
    ShowMessage(s);
  finally
    sl.Free;
  end;
end;
Sieht einwandfrei aus (siehe Anhang).
sieht wirklich gut aus, muss ich mal sehen ob ich noch wo nen Fehler drin hatte
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#27

Re: untypisierte dateien

  Alt 8. Apr 2010, 13:50
Vielleicht SetLength() für den Zielstring vergessen? Ich benutze ja 2 mal dieselbe Stringvariable im Gegensatz zu Deinem Code.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#28

Re: untypisierte dateien

  Alt 8. Apr 2010, 13:58
Zitat von DeddyH:
Vielleicht SetLength() für den Zielstring vergessen? Ich benutze ja 2 mal dieselbe Stringvariable im Gegensatz zu Deinem Code.
werd das später nochmal in Ruhe durchchecken, muus jetzt erst mal noch was anderes machen.
ich danke euch bis hierhin, melde mich sicher nochmal.
Karl-Heinz
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#29

Re: untypisierte dateien

  Alt 9. Apr 2010, 08:09
hallo zusammen,
das mit den Umlauten funktioniert zwar noch nicht, aber das ist erst mal zweitrangig.

Das Einlesen des einen DS aus dem Beispiel funktioniert und zwar folgendermassen:

Delphi-Quellcode:
tMyrecord = packed record
       f1 : array [0..$36] of byte;
       artnr: array [$37..$3C] of char;
       f2 : array [$3D..$4A] of byte;
       name : array [$4B..$63] of char;
       trenn1: byte;
       name2 : array [$65..$7D] of char;
       f3 : array [$7F..$DF] of byte;
       preis : array [$E0..$E6] of char;
       rest : array [$E7..$3FF] of char;
   end;

   
var
  buffer : array [0..1024] of char;
  myrecord : tMyrecord absolute buffer;
  gelesen : integer;
  FS: TFileStream;
  test1, test2, test3, test4: string;

begin
fs:=tfilestream.create('muster.txt', fmOpenRead);

gelesen:=fs.read(buffer,sizeof(buffer));
 test1:= myrecord.artnr ;
 test2:= myrecord.name ;
 test3:= myrecord.name2 ;
 test4:= myrecord.preis ;
Die vollständige Datei hat aber 557056 byte , also 544 DS.
die lassen sich zwar vollständig in den Buffer lesen, (buffer : array [0..557056] of char aber wie komm ich an die positionen ran?
ne while eof geht ja auchnicht
EDIT: ich könnte ja 544 files draus machen, aber sicher geht das einfacher, oder?
Danke für eure Hilfe.
Karl-Heinz
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#30

Re: untypisierte dateien

  Alt 9. Apr 2010, 08:16
Guten Morgen,

der "Lesezeiger, bzw. Leseposition" ändert sich nach jedem Lesevorgang.
Liest Du jeweils immer einen Datensatz ein steht der Lesezeiger auf dem nächsten Byte hinter dem
Datensatz. Liest Du einen weiteren Datensatz fängt der Lesevorgang an der Position an wo der Lesezeiger
hinzeigt.

Die Anzahl der Datensätze erhälst Du so: Stream.size div Datensatzgröße.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:35 Uhr.
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