Entwickler-Ecke
Dateizugriff - freies Dateiformat auslesen
joerghamster - Do 20.03.03 20:12
Titel: freies Dateiformat auslesen
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 - 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.
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]
joerghamster - 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 - 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
joerghamster - 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 - Sa 22.03.03 01:11
Das ist einfach:
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
joerghamster - 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
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!