[gelöst] Abgeschnittene Output-Datei

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
holx
Beiträge: 5
Registriert: Mo 28. Apr 2014, 10:59

[gelöst] Abgeschnittene Output-Datei

Beitrag von holx »

Hallo zusammen,

ich habe ein Problem mit meiner Output-Datei. Die "Größe" dieser scheint bei mir auf etwa 240 Zeichen begrenzt zu sein. Da das jeweilige Output-Ergebnis leider mehr Zeichen in Anspruch nimmt, wird der Output immer ab einer bestimmten Stelle abgeschnitten. Verändere ich den Quellcode und verzichte beispielsweise auf exakt 5 Zeichen in einer WriteLN-Anweisung (Leerzeichen und Leerzeilen zählen hierbei mit), dann beinhaltet der aktualisierte Output auch exakt 5 Zeichen mehr als der vorherige.

Hier noch einige (möglicherweise) wichtigen Zeilen aus dem Quellcode, die meiner Meinung nach eventuell für das Problem verantwortlich sein könnten. Der Quellcode stammt hierbei aus dem Anhang eines wissenschaftlichen Papers.

type data = array [1..3] of real;
var results : text;

{$N+}

assign(results, 'c:result.txt');
rewrite(results);

Ein großes Danke für Eure Zeit und Hilfe!
Zuletzt geändert von holx am Mo 28. Apr 2014, 13:06, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: Abgeschnittene Output-Datei

Beitrag von theo »

Mit dem bisschen Code kann man nicht viel sagen. Welche Strings verwendest du? Probiere {$H+}
http://wiki.lazarus.freepascal.org/String/de

holx
Beiträge: 5
Registriert: Mo 28. Apr 2014, 10:59

Re: Abgeschnittene Output-Datei

Beitrag von holx »

Hallo theo, danke für die schnelle Antwort!

Nach abändern auf {$H+} ändert sich der Output leider nicht. Einen String wie von dir beschrieben kann ich im Code nicht finden, ist wie gesagt nur ein abgeschriebener Quellcode. Die Variablen, die im Quellcode letztlich auch ausgegeben werden, sind alle als "real" deklariert. Neben diesen Variablen, die im Ouput ausgegeben werden, soll er nur Text der folgenden Form enthalten:

writeln(results,'lead time data:');

Als Anhang stelle ich gerne noch den vollständigen Code zur Verfügung.
Dateianhänge
Gamma.txt
(3.31 KiB) 70-mal heruntergeladen

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Abgeschnittene Output-Datei

Beitrag von Scotty »

Du solltest die Datei auch schließen, damit geflusht wird.

Code: Alles auswählen

AssignFile(f,'results.txt');
try
  Rewrite(f);
finally
  CloseFile(f);
end;
Oder gleich mit OO arbeiten und TStringList/TStream o.ä. mit SaveToFile benutzen.

Philos
Beiträge: 43
Registriert: Mo 3. Mär 2014, 16:06
OS, Lazarus, FPC: Ubuntu Linux 14.04, Windows 7/8, Lazarus 1.2.2, Delphi XE5
CPU-Target: amd64
Wohnort: Rostock
Kontaktdaten:

Re: Abgeschnittene Output-Datei

Beitrag von Philos »

var results : text;
Was ist denn das für ein Datentyp genau? Habe gerade mal danach gesucht, aber nichts gefunden. Liegt es vielleicht daran? Ansonsten kann ich mir nur erklären, dass du auf einem 8-Bit-Rechner proggst und
pro Datei damit nur 256 ( - paar Steuerzeichen ) Zeichen bleiben =P
....Letzteres ist natürlich nicht ernst gemeint ;)
((2*b) || !(to_be)) ... that's the question.

holx
Beiträge: 5
Registriert: Mo 28. Apr 2014, 10:59

Re: Abgeschnittene Output-Datei

Beitrag von holx »

Scottys Einwand hat die Lösung gebracht!

Nachdem ich durch einfügen der try/finally Abfrage noch einen Laufzeitfehler erhalten hab, hat ein simples

closefile(results);

am Ende des Codes Abhilfe geschafft. Vielen Dank an alle!

Mathias
Beiträge: 6907
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: [gelöst] Abgeschnittene Output-Datei

Beitrag von Mathias »

Was ist denn das für ein Datentyp genau?
Die einfachste Methode um Text-Dateien zu schreiben und lesen, so wie in diesen Beispiel.
Ausgabe erfolgt im Beispiel auf das Standard-Ausgabegerät.

Code: Alles auswählen

program  project1;
var
  f: Text;
  c:char;
begin
  AssignFile(f, '');
  ReWrite(f);
  WriteLn(f, 'Hello World');
  CloseFile(f);
end. 
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Philos
Beiträge: 43
Registriert: Mo 3. Mär 2014, 16:06
OS, Lazarus, FPC: Ubuntu Linux 14.04, Windows 7/8, Lazarus 1.2.2, Delphi XE5
CPU-Target: amd64
Wohnort: Rostock
Kontaktdaten:

Re: [gelöst] Abgeschnittene Output-Datei

Beitrag von Philos »

Ah ok, vielen Dank für die Aufklärung, obwohl das eigentliche Problem ja schon gelöst war! ;)
((2*b) || !(to_be)) ... that's the question.

Antworten