Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
   R14 Arbeiten mit Dialogfeldern

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:  R14 Arbeiten mit Dialogfeldern (88 mal gelesen)
M.Krause
Mitglied
Elektrotechniker

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

Beiträge: 4
Registriert: 26.06.2002

erstellt am: 26. Jun. 2002 17:15    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 alle zusammen!
Erwartungsvoll wende ich mich, auf suche nach schneller Hilfe, an euch!
Ich habe folgendes Problem:
Ich möchte für ein Druck-Programm über ein "Listenfeld" die zu druckenden Seiten auswählen! Das ist auch so alles kein Problem!
Das Problem ist, das es oftmals sehr viele Seiten werden können (400 aufwärts!)
Wenn ich nun im Listenfeld z.B. die besagten 400Seiten auswähle, bekomme ich leider nur "256" Seiten am Ende raus! Wie kann ich an dieser "magischen" 256 etwas ändern oder voreinstellen?

aus LISP:
(action_tile "filebox" "(setq readlist $value)(print readlist)")

Über "(print readlist)" kann man sehr schön sehen, das ab der 256ten Auswahl nichts mehr übernommen wird! Aber wieso? 

aus DCL:
: list_box {
  label = "&Dateien:";
  value = "0";
  key = "filebox";
  width = 20;    
  height = 30;
  multiple_select = true;
}

So, ich hoffe, damit kann jemand was anfangen!
Vielen Dank auf jeden Fall schon mal vorab!
gruss
Maddin

------------------
Maddin

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 27. Jun. 2002 01:17    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 M.Krause 10 Unities + Antwort hilfreich

Hi Maddin,

ich habe das, was du festgestellt hast, auch schon ähnlich erlebt. Ich sehe das Problem aber nicht in der Rückgabe, sondern schon in der Listbox selbst. Irgendwo gibt's da Kapazitätsgrenzen. Der folgende Code zeigt das:

(defun dcl-addlist(key lst / )
  (start_list key 1)
  (mapcar'add_list lst)
  (end_list)
)

(defun test( / dclid)
  (setq dclid(load_dialog"test"))
  (new_dialog "test" dclid)
  (dcl-addlist"filebox"(cr-l))
  (start_dialog)
)

(defun cr-l( / l i)
  (setq i 0)
  (repeat 1000
    (setq l(cons(strcat"item"(itoa i)"______________")l))
    (setq i(1+ i))
  )
  ;(princ(apply'+(mapcar'strlen l)))
  (reverse l)
)

Hier sollten eigentlich die Posten 'item0___________' bis 'item999______________' in der Listbox erscheinen, aber es sind gerade mal etwa 100, die drinstehen. Wenn man noch ein paar Tiefstriche anfügt, werden es noch weniger.

Die auskommentierte Zeile ermittelt übrigens die Gesamtlänge der Zeichenkette, allerdings muss man die '\n' noch hinzurechnen. Eine Grenze konnte ich bisher allerdings nicht ermitteln. Selbst wenn ich die Tiefstriche ganz streiche und 'item' durch 'i' ersetze, werden gerade mal 423 Zeilen angezeigt. Wie du also überhaupt mehr als 400 Zeilen reingekriegt hast, ist mir schon ein Rätsel.

Die Rückgabe ist, wie du bemerkt hast, offensichtlich immer auf 255 begrenzt. Und was kann man da machen? Nix! Da haben irgendwelche Programmierer in ihrer unendlichen Weisheit einfach mal Sachen wie
<b>char listeninhalt[20000];</b> und <b>int auswahl[255];</b> in den Sourcecode geschrieben, und dabei ist es dann für immer geblieben.

Die DCL-Schnittstelle ist das ungepflegteste Stück Software, das mir überhaupt bekannt ist. Seit dem Erscheinen vor vielen, vielen Jahren hat sich AutoDesk nicht bemüht, da noch irgendetwas dran zu verbessern oder zu ändern. So alt, wie das Ganze ist, entstand der Code wahrscheinlich auf einem 386er Rechner mit 4 MB Arbeitsspeicher, aber selbst das ist keine Entschuldigung - da hätte AutoDESK fast ein Jahrzehnt Zeit gehabt, das mal auf Vordermann zu bringen.

Fazit: für kleine Listen ohne irgendwelche Features brauchbar, aber für solche Sachen, die du machen willst, ist Proteus einfach völlig ungeeignet. Aber auch in VB stösst man an solche Grenzen. Erinnere mich dumpf, dass ich da mal was machen wollte, aber VB sagte dann: 'Nö, mein lieber, mehr als 255 ... in einem Dialog geht nicht!' (ich glaube, es waren die Controls selbst).

Das Programmieren mit statischen Arrays, wo eigentlich eine verkettete Liste angebracht wäre, ist ja ein beliebtes Hobby;-) Da steigen dann Spiele aus, weil man mehr als 32768 Goldstücke angesammelt hat usw. Kennen wir doch alle...

Gruss, Axel

------------------
http://www.autolisp.mapcar.net

http://www.autolisp-tutorial.mapcar.net

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2494
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 27. Jun. 2002 09: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 M.Krause 10 Unities + Antwort hilfreich

Hi,
habt ihr schon mal versucht das "doslib" von Robert McNeel (www.mcneel.com) für solche Zwecke einzusetzen?
Wenn ich mich recht entsinne, verwende ich dort in einem meiner Programme "dos_listbox" und "dos_multilist mit deutlich mehr als 400 Einträgen und es funzt wunderbar...
Ciao,
Marc

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