AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[LIN][FPC][TERM] Zeichenbegrenzung

Ein Thema von Nils_13 · begonnen am 5. Feb 2008 · letzter Beitrag vom 5. Feb 2008
Antwort Antwort
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#1

[LIN][FPC][TERM] Zeichenbegrenzung

  Alt 5. Feb 2008, 10:51
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.
  Mit Zitat antworten Zitat
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#2

Re: [LIN][FPC][TERM] Zeichenbegrenzung

  Alt 5. Feb 2008, 11:26
Kannst Du dazu ein wenig mehr posten?
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#3

Re: [LIN][FPC][TERM] Zeichenbegrenzung

  Alt 5. Feb 2008, 11:32
Delphi-Quellcode:
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;
Das soll eigentlich aus
Zitat:
LADE DIR NUN DIESE DATEI RUNTER UND SAG MIR DEN NAMEN DES LIEDES GRAUEZELLEVAMAGCRONONORGSONGWAV
das machen:
Zitat:
.-.. .- -.. . / -.. .. .-. / -. ..- -. / -.. .. . ... . / -.. .- - . .. / .-. ..- -. - . .-. / ..- -. -.. / ... .- --. / -- .. .-. / -.. . -. / -. .- -- . -. / -.. . ... / .-.. .. . -.. . ... / --. .-. .- ..- . --.. . .-.. .-.. . ...- .- -- .- --. -.-. .-. --- -. --- -. --- .-. --. ... --- -. --. .-- .- ...-
Das Ergebnis:
Zitat:
.-.. .- -.. . / -.. .. .-. / -. ..- -. / -.. .. . ... . / -.. .- - . .. / .-. ..- -. - . .-. / ..- -. -.. / ... .- --. / -- .. .-. / -.. . -. / -. .- -- . -. / -.. . ... / .-.. .. . -.. . ... / --. .-. .- ..- . --.. . .-.. .-.. . ...- .- -- .- --. -.-. .-
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: [LIN][FPC][TERM] Zeichenbegrenzung

  Alt 5. Feb 2008, 11:37
evtl. schleicht sich irgendwo ein #0 dazwischen?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#5

Re: [LIN][FPC][TERM] Zeichenbegrenzung

  Alt 5. Feb 2008, 11:59
Einfaches Nachzaehlen hilft - oder?


...



Ich schatze es ist kein Zufall, dass das Ergebnis nach 256 Zeichen abgeschnitten wird.
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#6

Re: [LIN][FPC][TERM] Zeichenbegrenzung

  Alt 5. Feb 2008, 12:18
Hm, habe den Code angepasst, hat aber nichts geändert:
Delphi-Quellcode:
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;
EDIT:

= 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....
  Mit Zitat antworten Zitat
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#7

Re: [LIN][FPC][TERM] Zeichenbegrenzung

  Alt 5. Feb 2008, 12:29
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.
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#8

Re: [LIN][FPC][TERM] Zeichenbegrenzung

  Alt 5. Feb 2008, 12:32
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!
  Mit Zitat antworten Zitat
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#9

Re: [LIN][FPC][TERM] Zeichenbegrenzung

  Alt 5. Feb 2008, 13:15
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+}
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz