![]() |
[LIN][FPC][TERM] Zeichenbegrenzung
Hi,
ich übertrag gerade eine Konsolenanwendung von mir nach Linux. Dazu benötige ich den Free Pascal-Compiler, deshalb habe ich die Frage auch in dieser Kategorie gepostet. Da es eine Konsolenanwendung ist, ist es denke ich klar, dass ich auch bei dem terminal-fanatischen Linux eine Konsolenanwendung haben will. Nun schau ich gerade meine Rückgabe des Programmes durch und stelle fest, dass da was fehlt. Es ist vom Code her nicht ersichtlich, warum da was fehlt. Deshalb gehe ich davon aus, dass hier der String zu lang ist und abgeschnitten werden muss. Habt ihr eine Idee, was ich nun tun könnte ? Im schlimmsten Fall nehm ich die Direktausgabe raus und mach die Alternative zum Standard: In Datei schreiben. Das finde ich aber schlecht, denn ich will schließlich die Rückgabe des Programms einfach abkopieren und nicht erst noch eine Datei öffnen. |
Re: [LIN][FPC][TERM] Zeichenbegrenzung
Kannst Du dazu ein wenig mehr posten?
|
Re: [LIN][FPC][TERM] Zeichenbegrenzung
Delphi-Quellcode:
Das soll eigentlich aus
const Arr : Array[0..1] of Array[0..38] of String = (
('.-', '-...', '-.-.', '-..', '.', '..-.', '--.', '....', '..', '.---', '-.-', '.-..', '--', '-.', '---', '.--.', '--.-', '.-.', '...', '-', '..-', '...-', '.--', '-..-', '-.--', '--..', '-----', '.----', '..---', '...--', '....-', '.....', '-....', '--...', '---..', '----.', '.-.-.-', '--..--', '..--..'), ('A' , 'B' , 'C' , 'D' , 'E', 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' , 'O' , 'P' , 'Q' , 'R' , 'S' , 'T', 'U' , 'V' , 'W' , 'X' , 'Y' , 'Z' , '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '.' , ',' , '?')); ... // l = Zu Enkodierender String for i := 1 to Length(l) do begin if l[i] = ' ' then s := s + '/ ' else for j := 0 to High(Arr[1]) do if Arr[1][j] = Trim(UpperCase(l[i])) then s := s + Arr[0][j] + ' '; end; Zitat:
Zitat:
Zitat:
|
Re: [LIN][FPC][TERM] Zeichenbegrenzung
evtl. schleicht sich irgendwo ein #0 dazwischen?
|
Re: [LIN][FPC][TERM] Zeichenbegrenzung
Einfaches Nachzaehlen hilft - oder?
... Ich schatze es ist kein Zufall, dass das Ergebnis nach 256 Zeichen abgeschnitten wird. |
Re: [LIN][FPC][TERM] Zeichenbegrenzung
Hm, habe den Code angepasst, hat aber nichts geändert:
Delphi-Quellcode:
EDIT:
for i := 1 to Length(l) do
begin if l[i] = ' ' then s := s + '/ ' else for j := 0 to High(Arr[1]) do if Length(s) = 256 then begin WriteLn(s); s := ''; end else if Arr[1][j] = Trim(UpperCase(l[i])) then s := s + Arr[0][j] + ' '; end; = 255 muss es sein. Das ist an sich aber unschön eine neue Zeile zu erstellen. Ist es nicht möglich das aneinander zu ketten ? Und was zur Hölle macht die DP mit meinem Code...immer wird er auseinandergenommen und ich muss ihn erst nochmal umschreiben.... |
Re: [LIN][FPC][TERM] Zeichenbegrenzung
Ich hatte eigentlich eher den Datentyp gemeint, der nur 256 Zeichen aufnimmt.
Da die deklaration in deinem Code nicht enthalten ist, kann ich aber nur raten. |
Re: [LIN][FPC][TERM] Zeichenbegrenzung
l ist ein String, der kann mehr als 256. Problematisch ist die Ausgabe: Die Konsole gibt vor dass ab 256 Zeichen schluss ist. Deshalb muss ich das abschneiden, das geht aber nicht so gut.
Ich kenne nun meinen Fehler. Delphi hat automatisch scheinbar längere Strings aktiviert, bei FPC muss man das erst noch einschalten ODER (so hab ich es gemacht) {$MODE DELPHI} ganz oben hinschreiben. Danke an alle für die Hilfe! |
Re: [LIN][FPC][TERM] Zeichenbegrenzung
Genau das hatte ich in meinem Posting weiter oben gemeint. Du musst latuernich die Strings so definieren, dass sie mehr als 255 Zeichen aufnehmen koennen:
{$H+} |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 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