Autor Beitrag
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 22.01.19 00:39 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4049
Erhaltene Danke: 838

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Di 22.01.19 11:34 
Hallo,

ein fstream ist sowohl lesend als auch schreibend (im Gegensatz zu jeweils ifstream und ofstream), so daß es für die Lese- und die Schreibposition 2 verschiedene Werte gibt (g und p stehen für get und put - keine tollen Namen m.E. ;- ).

Beim TStream gibt es wohl nur eine Position für beide: TStream.Position.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 22.01.19 14:17 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4049
Erhaltene Danke: 838

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Di 22.01.19 15:15 
Nicht direkt, sondern einfach nur
ausblenden Delphi-Quelltext
1:
2:
// delphi
stream.Position := pos;

(d.h. es gibt nur genau 1 Lese- und Schreibposition in Delphi).

Zum Auslesen in C++ gibt es die beiden Funktionen tellg und tellp, d.h. dies entspricht dann
ausblenden Delphi-Quelltext
1:
2:
// delphi
pos := stream.Position;

Wenn du C++ Code hast, der unterschiedliche Lese- und Schreibpositionen benutzt, dann müßtest du das selber in Delphi nachhalten.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 22.01.19 15:50 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4049
Erhaltene Danke: 838

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Di 22.01.19 17:33 
Wenn es jeweils die gleiche Variable beim Lesen und Schreiben ist, dann kannst du doch TStream benutzen, und mußt nur jeweils vor jedem Lesen und Schreiben die Position setzen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
stream.Position := pos;
stream.Read(...);

stream.Position := pos;
stream.Write(...);


PS: Drücke ich mich zu unverständlich aus?
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 22.01.19 18:23 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4049
Erhaltene Danke: 838

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Di 22.01.19 21:05 
Müsste es nicht eher fileStream.Read(data, BLOCK_SIZE) heißen?
Oder gibt man in Delphi bei einem Array den ersten Index an?
Oder werte mal den Rückgabewert von Read aus, ob wirklich die Anzahl Zeichen BLOCK_SIZE gelesen wurden.

Werden denn ohne encipher bzw. decipher die Daten korrekt gelesen und wieder zurückgeschrieben? Evtl. ist ja sonst ein Fehler in diesen Prozeduren.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 22.01.19 22:32 
- Nachträglich durch die Entwickler-Ecke gelöscht -