Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi textdatei zeichen für zeichen einlesen (https://www.delphipraxis.net/175766-textdatei-zeichen-fuer-zeichen-einlesen.html)

mikeslash 16. Jul 2013 20:23

textdatei zeichen für zeichen einlesen
 
Hallo,

ich habe eine Textdatei mit den Dezimalstellen von Pi und möchte diese Ziffer für Ziffer auslesen. Ich habe bisher nur den Befehl "readln" gefunden, der auch funktioniert, aber für meine Zwecke unbrauchbar ist. Ich bin Gelegenheitsprogrammierer ohne wirklich Grundlagenkenntnisse.

Datei: Textfile;
Ziffer: String;
...
AssignFile(Datei,'c:\Pi.txt');
Reset(Datei);
...
Readln(Datei,Ziffer);
...
CloseFile(Datei);


Gibt es einen eigenden Befehl dafür oder muss ich das Ganze anders angehen?

Dank und Gruß,
mikeslash

Uwe Raabe 16. Jul 2013 20:43

AW: textdatei zeichen für zeichen einlesen
 
Ohne jetzt deinen ganzen Ansatz umzustellen, nimm einfach
Delphi-Quellcode:
Read(Datei, Zeichen);
wobei
Delphi-Quellcode:
Zeichen: Char;

mikeslash 16. Jul 2013 21:21

AW: textdatei zeichen für zeichen einlesen
 
danke, funktioniert gut. nur bei den zeilenumbrüchen wird ein Leerzeichen eingelesen. kann man das irgendwie umgehen?

ich weise "Zeichen" einer variant-variablen zu und wandle dann in integer um, aber variant nimmt keine Leerzeichen an.

Union 16. Jul 2013 21:25

AW: textdatei zeichen für zeichen einlesen
 
Variant nimmt schon Leerzeichen an, aber die Umwandlung in integer funktioniert nicht. Prüfe doch auf ungültige Zeichen z.b.:
Delphi-Quellcode:
if Zeichen in [#10, #13, #32] then
   <überspringen>
oder auf gültige analog:
Delphi-Quellcode:
if Zeichen in [#48..#57] then
   <verarbeiten>

mikeslash 16. Jul 2013 21:40

AW: textdatei zeichen für zeichen einlesen
 
danke, jetzt läuft es!

p80286 16. Jul 2013 21:47

AW: textdatei zeichen für zeichen einlesen
 
Delphi-Quellcode:

Ziffern = String;
nummer : Byte;

....
  readln(f,Ziffern);
  for i:=1 to lenght(Ziffern) do
    nummer:=ord(Ziffern[i])-$30;
ggf. mußt Du
Delphi-Quellcode:
nummer
durch ein
Delphi-Quellcode:
Array of Byte
ersetzen.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz