Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Fehlermeldung beim Textdatei-Lesen

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:  Fehlermeldung beim Textdatei-Lesen (676 mal gelesen)
Mario Rosenbohm
Mitglied
Vermessungsingenieur


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

Beiträge: 112
Registriert: 09.10.2003

erstellt am: 05. Apr. 2006 13:58    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,

ich habe einen "blöden" Fehler in einer Lisp-Routine, die
eine Textdatei (INI) einliest.

Nach der letzten Zeile kommt die Fehlermeldung:
"Fehlerhafter Argumenttyp: stringp nil"

Wird durch Lisp keine EOF erkannt?

Gruß Mario

Ausschnitt aus der Routine:

Code:

  (setq iniDatei (open "D:\\Projekte\\AutoCAD\\GMK-ZI\\ImportKor.ini" "r"))
  (setq iniZeile (read-line iniDatei))
  (getSectionName iniZeile)
  (if (= sectionName "ImportKor")
    (progn     
      (while (setq iniZeile (read-line iniDatei)) ; <<< Hier wird nach der lezten Zeile der Fehler geschmissen
        (getLineName iniZeile)
        (getLineValue iniZeile)
        (if (/= lineName nil)
          (progn
            (if (= lineName "Erweiterung") (setq fileExt lineValue))
            (if (= lineName "Startpfad") (setq filePath lineValue))
            (if (= lineName "Schrifthoehe") (setq fontHeight lineValue))
            (if (= lineName "Schriftrichtung") (setq fontAngle lineValue))
            (if (= lineName "Schriftstil") (setq fontStil lineValue))
            (if (= lineName "Schriftausrichtung") (setq fontPos lineValue))
            (if (= lineName "StandartSymbolLayer") (setq layerSyb lineValue))
            (if (= lineName "StandartNameLayer") (setq layerNum lineValue))
            (if (= lineName "StandartHoeheLayer") (setq layerNN lineValue))
            (if (= lineName "PunktNum_Offs_RW") (setq pNrOffsRW lineValue))
            (if (= lineName "PunktNum_Offs_HW") (setq pNrOffsHW lineValue))
            (if (= lineName "PunktNum_Offs_NN") (setq pNrOffsNN lineValue))
            (if (= lineName "PunktNN_Offs_RW") (setq pNNOffsRW lineValue))
            (if (= lineName "PunktNN_Offs_HW") (setq pNNOffsHW lineValue))
            (if (= lineName "PunktNN_Offs_NN") (setq pNNOffsNN lineValue))
            (if (= lineName "PunktWeight_Offs_RW") (setq pWeightOffsRW lineValue))
            (if (= lineName "PunktWeight_Offs_HW") (setq pWeightOffsHW lineValue))
            (if (= lineName "PunktWeight_Offs_NN") (setq pWeightOffsNN lineValue))
            (if (= lineName "OffsetFaktor") (setq offsFaktor lineValue))
          )
          (alert "Leere Zeile")
        )
      )
    )
  )
  (close iniDatei)

INI-Datei:

Code:

[ImportKor]
Erweiterung=kor
Startpfad=C:\DATEN\
Schrifthoehe=0.2
Schriftrichtung=0.0
Schriftstil=STANDART
Schriftausrichtung=ML
PunktNum_Offs_RW=1.0
PunktNum_Offs_HW=1.0
PunktNum_Offs_NN=0.0
PunktNN_Offs_RW=1.0
PunktNN_Offs_HW=0.0
PunktNN_Offs_NN=0.0
PunktWeight_Offs_RW=1.0
PunktWeight_Offs_HW=-1.5
PunktWeight_Offs_NN=0.0
OffsetFaktor=1.0
StandartSymbolLayer=Nachladepunkt_Syb
StandartNameLayer=Nachladepunkt_Num
StandartHoeheLayer=Nachladepunkt_NN
StandartWeightLayer=Nachladepunkt_Weight<<Diese Zeile wird noch eingelesen, nach dem Zeilenumbruch kommt die Fehlermeldung.


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: 05. Apr. 2006 14:12    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 Mario Rosenbohm 10 Unities + Antwort hilfreich

denke mal, die Funktionen 
getLineName und getLineValue (woauchimmer die her sind) vertragen keine Leerstringeingabe ... wie sie (read-line ..) liefert, wenn die letzte Zeile in der Datei mit "Enter"  abgeschlossen wurde..

------------------
  - 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

Mario Rosenbohm
Mitglied
Vermessungsingenieur


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

Beiträge: 112
Registriert: 09.10.2003

erstellt am: 05. Apr. 2006 14:49    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

@CADmium

eigendlich sollten die damit zurecht kommen. Aber da kann ich erst wieder Morgen schauen. FEIERABEND. 

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

Mario Rosenbohm
Mitglied
Vermessungsingenieur


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

Beiträge: 112
Registriert: 09.10.2003

AutoCAD Civil 3D 2017, 2022
CADdy V.17
Laptop Win10 Intel i7 2.71GHz, 64GB Ram,

erstellt am: 06. Apr. 2006 07: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

... wie meistens liegt der Fehler ganz wo anders.

Die While-Schleife wurde ordentlich verlassen. Der Fehler wurde
weiter unten in der Routine geschmissen.

Kann man im VLISP eigentlich wie in der Borland C++Builder-IDE
den Quellcode debuggen. z.B.: Einzelschrittdurchlauf
Variablenüberwachung etc.
Gibt es hierzu ein Tutorial (möglichst in Deutsch)?

Gruß Mario

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 06. Apr. 2006 07:25    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 Mario Rosenbohm 10 Unities + Antwort hilfreich

... das ist ja der Vorteil, wenn man im VLIDE programmiert. In diesem Beitrag, habe ich mal ganz grob das Debuggen erklärt.

Grüße Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 06. Apr. 2006 15:13    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 Mario Rosenbohm 10 Unities + Antwort hilfreich

also an dem Code finde ich mal keinen Fehler, der sollte eigetnlich so durchlaufen, es kann vielleicht sein, dass die INI-Datei zum Schluss noch eine Leerzeile beinhaltet, und Deine Funktionen nichts mit einem "" anfangen ?

Strinp->NIL kann nicht in deiner markierten zeile auftreten, weil hier keine Funktion definitiv einen Strin erwartet.

zu dem ganzen zeugs hier !

(if (/= lineName nil)
          (progn
            (if (= lineName "Erweiterung") (setq fileExt lineValue))
            (if (= lineName "Startpfad") (setq filePath lineValue))
            (if (= lineName "Schrifthoehe") (setq fontHeight lineValue))
            (if (= lineName "Schriftrichtung") (setq fontAngle lineValue))
            (if (= lineName "Schriftstil") (setq fontStil lineValue))
            (if (= lineName "Schriftausrichtung") (setq fontPos lineValue))
            (if (= lineName "StandartSymbolLayer") (setq layerSyb lineValue))
            (if (= lineName "StandartNameLayer") (setq layerNum lineValue))
            (if (= lineName "StandartHoeheLayer") (setq layerNN lineValue))
            (if (= lineName "PunktNum_Offs_RW") (setq pNrOffsRW lineValue))
            (if (= lineName "PunktNum_Offs_HW") (setq pNrOffsHW lineValue))
            (if (= lineName "PunktNum_Offs_NN") (setq pNrOffsNN lineValue))
            (if (= lineName "PunktNN_Offs_RW") (setq pNNOffsRW lineValue))
            (if (= lineName "PunktNN_Offs_HW") (setq pNNOffsHW lineValue))
            (if (= lineName "PunktNN_Offs_NN") (setq pNNOffsNN lineValue))
            (if (= lineName "PunktWeight_Offs_RW") (setq pWeightOffsRW lineValue))
            (if (= lineName "PunktWeight_Offs_HW") (setq pWeightOffsHW lineValue))
            (if (= lineName "PunktWeight_Offs_NN") (setq pWeightOffsNN lineValue))
            (if (= lineName "OffsetFaktor") (setq offsFaktor lineValue))
          )
          (alert "Leere Zeile")
        )


warum taufst Du die Vaiablen, und die INI-Einträge nicht gleich
dann könntest Du den ganzen Schrott in einem Einzeiler unterbringen

(if lineName (set (read lineName) lineValue))
(set (read "a1") 56) ist das gleiche wie (setq a1 56)

damit kann man variablennamen als "String" vorliegen haben

------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

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

Mario Rosenbohm
Mitglied
Vermessungsingenieur


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

Beiträge: 112
Registriert: 09.10.2003

erstellt am: 06. Apr. 2006 19: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

@fuchsi

vielen Dank für Deine Bemühung, aber ich schrieb schon im vorletzten
Beitrag, daß der Fehler nicht in dieser While-Schleife verursacht wurde.
Nur durch das von mir bis dahin (nur in VLisp) verwendete "Billigdebugging"
mit (prompt "..") (princ ...) (print) hat die ware Fehlerquelle nicht gleich aufgedeckt.

@Brischke

Dankeschön das Debugging klappt so ganz gut.

Bis bald 

Mario

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