Entwickler-Ecke

Dateizugriff - EditFeld in Dateistelle


Biarchiv - So 13.10.02 16:06
Titel: EditFeld in Dateistelle
Hallo,

Ich habe zB ein Edit.Text Feld. Dort kann man nur eine Zahl von 1 - 255 eingeben. Wie kann ich das in eine Datei ab Stelle z.B. 600 diesen Byte von Edit.Text ändern? Also Das EditFeld die Zahl in eine Bytestelle Seeken.

Wie könnte das mit Datum und 3 Bytestellen gehen.

Wie ließt man die wieder in einen String ein? Bitte kein VCL also sollte rein mit sysutils gehen.

Danke


Delete - So 13.10.02 16:15
Titel: Re: EditFeld in Dateistelle
Biarchiv hat folgendes geschrieben:
Ich habe zB ein Edit.Text Feld.
Dort kann man nur eine Zahl von 1 - 255 eingeben.
Wie kann ich das in eine Datei ab Stelle z.B. 600 diesen Byte von Edit.Text
ändern? Also Das EditFeld die Zahl in eine Bytestelle Seeken.

Würdest du das noch mal auf Deutsch erklären? Momentan sehe ich nämlich nur ein Paradoxon: wenn das Editfeld nur Zahlen von 1 bis 255 erlaubt, wie willst du dann eine 600 eingeben?

Zitat:
Wie könnte das mit Datum und 3 Bytestellen gehen.

:?

Zitat:
Wie ließt man die wieder in einen String ein?

"inttostr" - ist aber nur geraten, weil ich -offen gesagt- keine Ahnung habe, was du eigentlich willst.


Biarchiv - So 13.10.02 17:44

Hallo,

Ne verstest mich falsch.
Ich will in einer Datei nur bei file.position := 600 ein Byte ändern und das soll was in
Edit.Text eingegeben wird abgeändert werden.

Edit1.Text 255 > File Stelle 600 Byte in ffh ändern.


Delete - So 13.10.02 17:56

Sei nicht sauer, aber ich würde es mal ab und zu mit ein paar Interpunktionszeichen versuchen. Ich versuche das mal für dich zu machen:
der Grammatiklehrer hat folgendes geschrieben:
Nein, du verstehst mich falsch.
Ich will in einer Datei, an der Position 600, ein Byte ändern. Und zwar soll der Wert aus dem Edit-Feld in die Datei eingetragen werden. Beispiel:

Quelltext
1:
Edit.Text = 255   // Offset 600, Byte in 0xff ändern                    

So hätte ich´s nämlich auch gleich verstanden.

Gut, jetzt zur Lösung:
Es gibt kein Problem. Du öffnest die Datei (z.B. mit AssignFile, und Reset), springst an Position 600 und schreibst das Byte rein. Das Byte selbst bekommst du durch eine simple Umwandlung:

Quelltext
1:
2:
3:
4:
5:
var
  b : byte;
begin
  b := StrToIntDef(Edit1.Text,0);
end;

Um Fehler zu vermeiden, solltest du "b" auch wirklich als Byte deklarieren, damit du nicht versehentlich mehr Stellen überschreibst.

Zitat:
Wie könnte das mit Datum und 3 Bytestellen gehen.

Sind die 3 Bytestellen etwas eigenes von dir, oder bezieht sich das auf das Datum? Im letzteren Fall würde ich es mal mit 4 Bytes versuchen (DWORD, Integer, Longint). Das Prinzip ist dann aber das selbe wie eben beschrieben.

Zitat:
Wie ließt man die wieder in einen String ein?

Wahrscheinlich willst du das Byte, das an Position 600 steht, beim Programmstart anzeigen?! Wie gesagt: Datei öffnen, Position suchen, ein Byte einlesen und mit inttostr an das Edit-Feld übergeben.