TAN-Generator in Pascal?

Von: , Frage gestellt am Do, 18. Okt 2007

Hallo zusammen,

Wie kann ich mit Pascal eine Art "TAN-Generator" programmieren, welcher 50 TANs generiert und diese untereinander in eine Textdatei schreibt?
Die TANs werden schon erzeugt, soweit bin ich schon, allerdings hab ich ein Problem:

Beim Schreiben in die Textdatei überschreibt er immer den vorherigen TAN, anstatt den nächsten unten drunter zu setzen. Wie kann ich ihm sagen, dass er alle TANs untereinander schreiben soll? Ich habs schon mir einer FOR-TO-DO Schleife versucht, aber ich komm einfach nicht weiter ... Hat jemand einen Vorschlag?


Danke schonmal für eure Hilfe,

Hyper-Horst

4 Antworten zu dieser Frage

  1. Antwort von nach 43 Minuten 0 hilfreich
    Re: TAN-Generator in Pascal?

    Hallo,

    1) Datei zum Schreiben öffnen (AssignFile und ReWrite)
    2) TANs reinschreiben (WriteLn)
    3) Datei schließen (CloseFile)

    Fertig.

    Als Code:
    (ich setze mal an, dass die TANs als ein Array von Strings vorliegen; wenn du das anders gelöst hast, musst du den Code unten entsprechend ändern)

    procedure SaveTANs(Filename:String; TANs:Array of String);
    var
    F:Text;
    i:integer;
    begin
    AssignFile(F,Filename);
    Rewrite(F);
    For i := low(TANs) to high(TANs) do WriteLn(F,TANs[i]);
    CloseFile(F);
    end;
    

    Sollten die TANs als Ganzzahl-Werte zwischen 1 und 9999 vorliegen, bekommst du mit FormatFloat('0000',TANs[i]) den 4-ziffrigen String mit führenden Nullen (aus 12 wird zB. '0012').

    LG
    Jochen

    • Antwort von nach einer Stunde 0 hilfreich
      Re^2: TAN-Generator in Pascal?

      Vielen Dank schonmal!

      Dieses Low und High kennt mein Compiler nicht, was bedeutet das überhaupt? Sind das Variablen? Wenn ja, als was muss ich die Deklarieren?
      Hier mal ein Teil meines Codes:

      ASSIGN(zahl,'C:\Zufall~1\zahl.txt');
      REWRITE(zahl);
      WRITELN(zahl,zusammen[i]);
      CLOSE(zahl);

      Es ist ja logisch, dass hier immer der nächste TAN den vorherigen überschreibt, aber wie stelle es an, dass er einfach in die nächste Zeile springt und dort den nächsten speichert? Oder so ähnlich ... ;)

      • Antwort von nach einer Stunde 0 hilfreich
        Re^3: TAN-Generator in Pascal?

        Hallo, Dieses Low und High kennt mein Compiler nicht, was bedeutet
        das überhaupt? Sind das Variablen? Wenn ja, als was muss ich
        die Deklarieren?
        Das sind Funktionen, welche die Indizes des ersten und des letzten Elements eines Arrays zurückgeben. Kann sein, dass das dein Pascal-Compiler (noch) nicht kennt. Wenn du genau weißt, dass dein Array von zB. [1] bis [50] geht, dann kannst du statt "low(array)" auch direkt "1" und statt "high(array)" direkt "50" angeben. Hier mal ein Teil meines Codes:

        ASSIGN(zahl,'C:\Zufall~1\zahl.txt');
        REWRITE(zahl);
        WRITELN(zahl,zusammen[i]);
        CLOSE(zahl);
        Wo ist die Schleife, die eine TAN nach der anderen schreibt?

        Ich nehme an, "zusammen" ist das Array mit den TAN's. dann müsste der Code so aussehen (die fehlende Schleife habe ich fett geschrieben):

        ASSIGN(zahl,'C:\Zufall~1\zahl.txt');
        REWRITE(zahl);
        FOR i := 1 TO 50 DO WRITELN(zahl,zusammen[i]);
        CLOSE(zahl);
        
        Es ist ja logisch, dass hier immer der nächste TAN den
        vorherigen überschreibt,
        Kann es sein, dass du den gesamten o.g. Code INNERHALB der Scleife aufrufst? Das wäre blöd, weil REWRITE(zahl) dann JEDESMAL die alte Datei löscht/überschreibt. aber wie stelle es an, dass er
        einfach in die nächste Zeile springt und dort den nächsten
        speichert?
        Mit WRITELN. Das "LN" am Ende heißt "LINE", also "schreibe einen Text und springe in die nächste Zeile". Ein weiterer Aufruf von WRITELN (OHNE!! zuvor die Datei zu schließen und wieder zu öffnen!!) schreibt den nächsten Text automatisch in die nächste Zeile.

        Oder so ähnlich ... ;)

        Genau so.

        LG
        Jochen

        • Antwort von nach 2 Stunden 0 hilfreich
          Re^4: TAN-Generator in Pascal?

          Ich habs, dankeschön.

          Das Problem war wirklich, dass das REWRITE in der Schleife mit drin war. Daran hätte ich aber nie gedacht :D

          Also nochmal vielen Dank für die Hilfe :)



          Hyper-Horst

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!