Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Read-line hilfe!

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:  Read-line hilfe! (1617 mal gelesen)
FiRePhoeniX
Mitglied
Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau


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

Beiträge: 127
Registriert: 22.04.2007

AutoCad 2007

erstellt am: 11. Nov. 2008 12: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 Forum,
ich bräuchte mal wieder eure Hilfe.
Und zwar geht es um folgendes:
Will an eine bestehende Liste die erste Zeile ersetzt . Und z.B 5 neuen Zeilen angehängt werden.
Das mit dem anghängen ist ein einfach da mach ich den Befehl:

(setq a (open Pfad "a"))

Dies bekomm ich ja hin. Aber das mit dem ersetzen der ersten Zeile macht mit Schwierigkeiten. Hab hier im Forum gesucht und bin auf folgenden Beitrag gestoßen. http://ww3.cad.de/foren/ubb/Forum145/HTML/002383.shtml#000001

Dort dir gibt es ein Programm wo mit man den Inhalt der Liste in eine Variable speichern kann.

;;;Datei lesen
(defun LESEN (dateiname / zeile  datei liste n)
  (if(setq datei (open dateiname "r"))
    (progn
      (setq n 1)
      (while (setq zeile (read-line datei))
(setq liste (cons (list n zeile) liste))
(setq n (+ n 1)))
      (close datei)))
    (reverse liste))

So hab ich das in meine Routine übernommen.

(defun lesetext ()
 
(setq n 1)
(setq datei (open opendatei "r")) 
 
  (while (setq zeiledatei1 (read-line datei))
     (princ (mapcar 'cdr zeiledatei1))
     (setq liste (cons (list n anzahlopzeile) liste))
     (setq n (+ n 1))
     )
      
 
    (close datei)
    (reverse liste)
)

Jetzt zu meinem Problem.
Diese Programm läuft auch aber es nimmt immer die erste Zeile und schreibt die in die Liste.
Bei einer Liste die so aussieht:

3
Linie 0,0 0,1
Linie 0,0 0,2
Linie 0,0 0,3

Steht am ende in der Variable:
(1. 3)(2. 3)(3. 3)(4. 3)

Wollte wissen wie ich einen Zeilensprung machen kann,
dass auch die anderen werte in die Liste kommen.
Oder ist das einfach nicht möglich?

Ich danke für jede Hilfe.
Sorry, hab es ausversehen ins falsche Forum gepostest bitte ind lisp Forum schieben es es geht. 

MFG

FiRePhoenix


[Diese Nachricht wurde von FiRePhoeniX am 11. Nov. 2008 editiert.]

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 11. Nov. 2008 12: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 FiRePhoeniX 10 Unities + Antwort hilfreich

Also irgendwie scheinst du das nicht verstanden zu haben !?

1. Zunächst sollte man also erstmal den Textfile einlesen, dazu brauchst du die
  "gefundene" Funktion nicht verändern, denn genau das macht sie ja.

2. Jede Zeile wird dabei in einer SubListe gespeichert, vorne steht die Zeilennummer
  gefolgt von dem Zeileninhalt ((1 "Ich")(2 "bin")(3 "ein")(4 "fünfzeiliger")(5 "Text!")).
  Jede Subliste = eine Zeile in der Datei ! Möchtest du eine Zeile entfernen
  so mußt du das Listenelement raushauen, möchtest du eine Zeile hinzufügen
  mußt du die Liste ergänzen usw.

3. (append(append'((0 neu1)) (cdr EINGELESENELISTE))'((0 neu1)(0 neu2)(0 neu3)(0 neu4)(0 neu5)))
  CDR liefert 2.Listenobjekt+Listenrest -> man könnte auch sagen "schneidet 1. Element ab"
  [Funktionen zu Listenbearbeitung cons reverse append car cadr etc.]

4. dann kann man wenn nötig die Liste wieder als Textdatei rausschreiben

Und wo genau wäre jetzt das Problem ?


[EDIT: aus Langeweile überarbeitet]
------------------
die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk)

[Diese Nachricht wurde von cadffm am 11. Nov. 2008 editiert.]

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

FiRePhoeniX
Mitglied
Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau


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

Beiträge: 127
Registriert: 22.04.2007

AutoCad 2007

erstellt am: 11. Nov. 2008 13:52    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

Danke erst mal für die Antwort cadffm.
Du möchtest wissen wo das Problem ist ich erkläre dir es gerne.
Vielleicht war meine Erklärung einfach nur schlecht Formuliert.
So, ich habe listen die in dieser Form aufgebaut sind.

3 --> Anzahl der Objekte
Linie 0,0 0,1 --> Objekt
Linie 0,0 0,2 --> Objekt
Linie 0,0 0,3 --> Objekt

Ich möchte jetzt zwei neune Objekte aufnehmen.
Die sollen darunter stehen.
Die ist ja leicht mit der open Funktion.
Jetzt hab ich aber nicht 3 Objekte sondern 5.
Also muss ich die erste Zeile ersetzen.
3 gegen 5
Da ich nicht weiß wie ich das am besten machen kann.
Hab ich mir überlegt ich schreibe die Liste in eine Variable.
Änderte die 3 in eine 5 und schreibe es wieder zurück in die Textdatei.
So war der Plan aber bei der Umsetzung haperst noch einwenig.^^
Vielleicht weiß jemand wie mal das einfacher lösen kann.
Bin für jede Hilfe dankbar.

mfg

SpEEDY

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 11. Nov. 2008 14:34    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 FiRePhoeniX 10 Unities + Antwort hilfreich

Hi,
kann Dein Problem leider nicht nachvollziehen...
welchen Code verwendest Du?
Was steht in der txt-Datei?
Wie soll die Liste am Ende ausschauen?
mfg heiko

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 11. Nov. 2008 14:39    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 FiRePhoeniX 10 Unities + Antwort hilfreich

du postest hier leider keine LISTEN - du redest nur davon..

Ansonsten habe ich dir quasi bereits eine 1:1 Lösung präsentiert gehabt ..

In dem Moment wo du die Textdatei als Liste hast kannst du mit
allem was dir Lisp zur Verfügung stellt manipulieren - dann schreibst
du die Liste komplett zurück in die Textdatei(überschreiben), fertig.

P1.Textdatei komplett einlesen
P2.Liste mit cons reverse append nth car cadr list etc. bearbeiten
P3.Textdatei erstellen (bzw. alte überschreiben)

Keine Ahnung ob es bei dir an dem Handling von Listen liegt
oder ob du den Vorgang P1-P3 nicht magst.

------------------
die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk)

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

FiRePhoeniX
Mitglied
Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau


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

Beiträge: 127
Registriert: 22.04.2007

AutoCad 2007

erstellt am: 11. Nov. 2008 15:31    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

Zitat:
Original erstellt von cadffm:
P1.Textdatei komplett einlesen
P2.Liste mit cons reverse append nth car cadr list etc. bearbeiten
P3.Textdatei erstellen (bzw. alte überschreiben)
[/B]


Genau was möchte ich doch. Ich schaffe es einfach nicht den Text inhalt in eine variable zuspeichern das ist alles. 

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 11. Nov. 2008 15: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 Nur für FiRePhoeniX 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von FiRePhoeniX:

;;;Datei lesen
(defun LESEN (dateiname / zeile  datei liste n)
  (if(setq datei (open dateiname "r"))
    (progn
      (setq n 1)
      (while (setq zeile (read-line datei))
(setq liste (cons (list n zeile) liste))
(setq n (+ n 1)))
      (close datei)))
    (reverse liste)
)

(setq MyVar (LESEN "C:/MeineTextdatei.txt"))

Dann hängt die Liste an dem Symbol "MyVar" und los gehts..

------------------
die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk)

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