Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Wie lang darf die Zeichenkette für read sein

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Wie lang darf die Zeichenkette für read sein (1508 mal gelesen)
Niggemann
Mitglied



Sehen Sie sich das Profil von Niggemann an!   Senden Sie eine Private Message an Niggemann  Schreiben Sie einen Gästebucheintrag für Niggemann

Beiträge: 159
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 21. Sep. 2012 00:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Forum,
ich komme mal wieder an meine Grenzen und brauche einen Denkanstoß.
Ich schreibe eine Liste ("350020" "35" "Test" ....) in eine Datei und möchte diese mit READ als Liste wieder einlesen und auswerten. Dieses klappt seit einigen Jahren super. Bisher hatte ich immer eine Zeilenlänge von 400 - 600 Zeichen, jetzt habe ich 3600 Zeichen und bekomme die Fehlermeldung:"; Fehler: Zeichenfolge in Eingabe zu lang"
Deshalb meine Frage wieviel Zeichen kann mann an read übergeben und wie kann ich es schaffen 3600 oder mehr Zeichen einzulesen?
Wie immer
vielen Dank im voraus.
Niggemann

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 21. Sep. 2012 07:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Niggemann 10 Unities + Antwort hilfreich

Hallo Niggemann,
wieviel Zeichen Du verwenden darfst weiß ich nicht, aber für mich sieht das nach einer Initialisierungsdatei aus.
Unter folgendem Link hatte ich mal beschrieben, wie man Listen schreiben und wieder LOADen kann, vielleicht ist das eine Alternative:
http://www.bosse-engineering.com/blog/?p=30


------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 21. Sep. 2012 07:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Niggemann 10 Unities + Antwort hilfreich

Das mit der max.Länge solltest du eigentlich selber testen können  .. 

und zum Einlesen hilft vielleicht das :

(vl-load-com)
(defun TXTFILE2LIST(FILENAME / FSO FILEOBJ FILESTREAM RETURN)
  (if(and(=(type FILENAME)'STR)
        (setq FILENAME(findfile FILENAME))
        (setq FSO(vlax-create-object "Scripting.FileSystemObject"))
    )
    (progn
      (if(setq FILEOBJ (vlax-invoke FSO "GetFile" FILENAME))
        (progn
          (if(setq FILESTREAM(vlax-invoke FILEOBJ "OpenAsTextStream" 1 0))
            (progn
              (while (=(vlax-get FILESTREAM "AtEndOfStream") 0)
                (setq  RETURN (cons (vlax-invoke FILESTREAM "ReadLine") RETURN))
              )
              (vlax-invoke FILESTREAM "Close")
              (vlax-release-object FILESTREAM)
            )
          ) 
          (vlax-release-object FILEOBJ)
        )
      )
      (vlax-release-object FSO)
    )
  )
  (if RETURN(reverse RETURN)) 
)         

Aufruf z.B.
(TXTFILE2LIST "D:\TESTUS.txt")

------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Meldin
Mitglied



Sehen Sie sich das Profil von Meldin an!   Senden Sie eine Private Message an Meldin  Schreiben Sie einen Gästebucheintrag für Meldin

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 21. Sep. 2012 17:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Niggemann 10 Unities + Antwort hilfreich

Hallo,
mit dem, in eine Datei schreiben, wieder einlesen und auswerten könnte sich vielleicht auch ein direkter Zugriff auf eine Excel-Datei lohnen.

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Niggemann
Mitglied



Sehen Sie sich das Profil von Niggemann an!   Senden Sie eine Private Message an Niggemann  Schreiben Sie einen Gästebucheintrag für Niggemann

Beiträge: 159
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 22. Sep. 2012 00:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

@ Jörn,
Dein Vorschlag nutze ich schon länger in anderen Programmen, klappt auch super. In meinem Fall lese ich eine Zeile und Wete sie aus, dort stehen zB.
$MODEL kommt dieses Wort weis ich das die nächsten Zeilen alle Daten für das Model haben und diese Zeilen sehen dann eben so aus:
("350020" "35" "Test" ....)
("350021" "35" "Test" ....)
Dann kann wieder eine Zeile mit dem Wort $??? kommen und die folgenden Zeilen werden nach einander abgearbeitet. Um deine Idee um zu setzen müste ich meine Ausgabe Funktion komplett ändern was ich nur ungerne machen möchte, sie läuft ja schon seit Jahren Fehler frei.

@Thomas,
(vlax-invoke FILESTREAM "ReadLine") oder (read-line FILENAME) geben
"(\"350020\" \"35\" \"Test\" ....)" zurück.
Lese ich eine Zeile mit (setq ZEILE (read-line FILENAME))
und mit (read ZEILE) gibt eben  ("350020" "35" "Test" ....) zurück womit ich direkt auf ein Listenelement mittels (nth 1 Liste) = "35" zugreifen und diesen Wert verarbeiten kann. Das ist da was ich möchte nur read kann eben nicht soviele Zeichen lesen.

@Wolfgang,
ja könnte man machen aber wie oben beschrieben ist es für mich dann sehr Aufwendig. So eine Textdatei kann man schnell per Email verschicken und der Empfänger kann sie einfach einlesen. Das klapp schon seit Jahren Fehlerfrei deshalb möchte ich das auch so beibehalten.

Gruß
Niggemann

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Niggemann
Mitglied



Sehen Sie sich das Profil von Niggemann an!   Senden Sie eine Private Message an Niggemann  Schreiben Sie einen Gästebucheintrag für Niggemann

Beiträge: 159
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 15. Nov. 2012 23:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Jörn,
da ich gerade Altlasten abarbeite zur Info auf deinen Link.
Mit (setq Test "Text....") kann ich max. 2355 Zeichen inkl. 54 x \n einlesen
mehr geht nicht.
Mfg.
Niggemann

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Meldin
Mitglied



Sehen Sie sich das Profil von Meldin an!   Senden Sie eine Private Message an Meldin  Schreiben Sie einen Gästebucheintrag für Meldin

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 16. Nov. 2012 18:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Niggemann 10 Unities + Antwort hilfreich

Hallo,
und wie siehts mit read-char und write-char aus vielleich ist so mehr möglich.

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Niggemann
Mitglied



Sehen Sie sich das Profil von Niggemann an!   Senden Sie eine Private Message an Niggemann  Schreiben Sie einen Gästebucheintrag für Niggemann

Beiträge: 159
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 16. Nov. 2012 22:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Wolfgang,
read-char kann mehr habe ich aber nicht ausgetestet.
Für meine Anwendung habe ich mir Steuerzeichen gesetzt und kann so über read-line die Daten einlesen, dieses ist für mich einfacher.
Gruß
Niggemann

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andreas Kraus
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von Andreas Kraus an!   Senden Sie eine Private Message an Andreas Kraus  Schreiben Sie einen Gästebucheintrag für Andreas Kraus

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 18. Nov. 2012 20:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Niggemann 10 Unities + Antwort hilfreich

Hallo Niggemann,
ich schreibe auch schon seit Jahren Daten in Listen die ich in Textdateien schreibe und (jetzt kommts) mit LOAD wieder einlese.

Der Inhalt der Textdatei muß nut um eine Klammer und das Wort quote ergänzt werden. Klammer am Dateiende wieder schließen nicht vergessen.

Die Textdatei sieht also z.B. so aus:

(quote
(
(("test-1" "test-2" "test-3" "test-4") ("test-a" "test-b" "test-c" "test-d"))
(("test-5" "test-6" "test-7" "test-8") ("test-e" "test-f" "test-g" "test-h"))
)
)

Ich hatte mit der Methode bisher noch keine Probleme hab aber so lange Zeichenketten noch nicht getestet.
Probiers einfach aus, vielleicht hilfts ja.

Edit...
Eben hab ich das hier noch gelesen:

Zitat:
So eine Textdatei kann man schnell per Email verschicken und der Empfänger kann sie einfach einlesen. Das klapp schon seit Jahren Fehlerfrei deshalb möchte ich das auch so beibehalten.

Hm... das geht mit einer solchen Liste natürlich nicht. Schade.
Aber vielleicht fällt mir noch was ein.

------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

[Diese Nachricht wurde von Andreas Kraus am 18. Nov. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Niggemann
Mitglied



Sehen Sie sich das Profil von Niggemann an!   Senden Sie eine Private Message an Niggemann  Schreiben Sie einen Gästebucheintrag für Niggemann

Beiträge: 159
Registriert: 31.10.2003

Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010

erstellt am: 19. Nov. 2012 21:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Andreas,
die Idee ist super und sollte auch klappen, "quote" ist halt das Zauberwort. Mit "load" kannst du ja auch Lisp-Programme mit etlichen KB laden somit auch meine 30.000 Ascii Zeichen. Mein Prog stammt noch aus ACAD10 DOS da habe ich aus Speichergünden eben eine Zeile gelesen und diese abgearbeitet usw. und nicht alles geladen, was heute ja etwas anders ist.
Was das verschicken angeht, die Textdateien werden mit Lisp erstellt und von dem selben Lisp auf einem anderen Rechner wieder gelesen somit also kein Problem. Beim nächsten mal werde ich es ausprobieren, jetzt ändere ich mein Prog nicht mehr.
Nochmal Danke für deinen Tipp.
Gruß
Niggemann

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz