Autor Beitrag
joerghamster
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 20.03.03 20:12 
Hi,

hab ein kleines problem.

ich hab ne sicherungsdatei von nem alten Dosprogramm welches ich in windows umsetzen sollte. Nun muss ich die datei auslesen und bekomme es absolut nicht hin.

Ich muss nach dem xten Zeichen der datei 98 zeichen auslesen und die dann weiterverarbeiten, dann die nächsten 98 usw.

Nur ich bekomme es nicht hin dass ich Bei der Datei zu der position x komme und dann exact 98 zeichen auslese (entweder kommen fehlermeldungen beim compilieren oder beim auslesen I/O fehler oder er fängt an ner falschen position an zu lesen . . . . . )

Dass es geht weiß ich, da ich sowas vor ein paar jahren schon mal gemacht hab, aber es will einfach nicht klappen.

Kann mir einer von euch sagen wie des geht ????

Gruß Joerghamster
SMI
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106

Win95-2003 / Debian / Suse
D1/D3/D6/D7
BeitragVerfasst: Do 20.03.03 21:01 
Es wäre sicherlich hilfreich wenn du deinen Quelltext posten würdest.
Folgender Code könnte dir aber helfen.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var
  FromF: file;
  NumRead: Integer;
  Buf: array[1..98] of Char; //Buffer für 98 Zeichen
  x:integer;
begin
  x:=10; //Deine x Position hier 10
  AssignFile(FromF, 'D:\xxx.txt');
  Reset(FromF, 1); // Record size = 1byte! Sonst kann es Problememit seek geben
  seek(FromF,x); //Position X anspringen
  // 98 Bytes in den Buffer
  BlockRead(FromF,Buf, SizeOf(Buf));
  // erneut 98 Bytes in den Buffer
  BlockRead(FromF,Buf, SizeOf(Buf));
  CloseFile(FromF);
end;



SMI[/code]

_________________
Wenn es im Jahre 1879 schon Computer gegeben hätte, würden diese vorausgesagt haben, daß man infolge der Zunahme von Pferdewagen im Jahre 1979 im Pferdemist ersticken würde.
(John C. Edwards, brit. Zukunftsforscher)
joerghamster Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 21.03.03 18:52 
:oops:

Ich hatte eigentlich genau den selben quelltext . . . . aber hatte irgendwo nen kleinen dreher drinnen :?

Dein quellcode tut einwandfrei.

Vielen Dank für die hilfe
SMI
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106

Win95-2003 / Debian / Suse
D1/D3/D6/D7
BeitragVerfasst: Fr 21.03.03 19:05 
Höchstwarscheinlich hat bei dir bei dem dem Reset Befehl "Reset(FromF, 1)" die eins gefehlt. Ansonsten ist ein Seekschritt anstatt einem Byte genau 128 Bytes groß/lang.

Dazu den Eintrag aus der Delphi Hilfe, ist leider in Englisch(da ich mit der englischen Delphi Version arbeiten muss).

Zitat:

procedure Reset(var F [: File; RecSize: Word ] );

.....

F is a variable of any file type associated with an external file using AssignFile. RecSize is an optional expression, which can be specified only if F is an untyped file. If F is an untyped file, RecSize specifies the record size to be used in data transfers. If RecSize is omitted, a default record size of 128 bytes is assumed.


Den selben Fehler habe ich auch schon mehrmals verbockt, daher kenn ich ihn so gut :wink:

SMI

_________________
Wenn es im Jahre 1879 schon Computer gegeben hätte, würden diese vorausgesagt haben, daß man infolge der Zunahme von Pferdewagen im Jahre 1979 im Pferdemist ersticken würde.
(John C. Edwards, brit. Zukunftsforscher)
joerghamster Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Sa 22.03.03 00:57 
hatte es auch mit 1 versucht, aber er ist bei seek nie so weit gegangen wie er sollte . . . . . . . nu tut es wenigstens :-)

weißt du zufällig auch wie ich einen array erstelle in der form

datensatz[1].name
datensatz[1].adresse
.
.
.
SMI
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106

Win95-2003 / Debian / Suse
D1/D3/D6/D7
BeitragVerfasst: Sa 22.03.03 01:11 
Das ist einfach:


ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
type
 RecordSet = Record
   Name     : STRING[20];
   addresse :String [40];
 end;

Var
  a: array [0..20]of RecordSet;
begin
 a[0].Name:= 'TEST';
 a[0].Addresse:= 'TEST2';
 Showmessage(a[0].Name);
 Showmessage(a[0].Addresse);
end;



SMI

_________________
Wenn es im Jahre 1879 schon Computer gegeben hätte, würden diese vorausgesagt haben, daß man infolge der Zunahme von Pferdewagen im Jahre 1979 im Pferdemist ersticken würde.
(John C. Edwards, brit. Zukunftsforscher)
joerghamster Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: So 23.03.03 12:45 
Danke, habs auch kurz nachdem ich es gepostet hatte rausbekommen konnte nur meinen post nichtmehr ändern wil mein proxi abgeschmirt is (sch... isdn :-( )

Aber trotzdem vielen dank für die hilfe . . . . . das hier is das erste forum über delphi wo ich nicht 1-2 wochen auf ne antwort warten musste ;-)

Werde auf jedenfall öfters hier vorbeischauen

Gruß joerghamster