| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: len funktion as integer? (590 mal gelesen)
|
jo_steph Mitglied Student

 Beiträge: 35 Registriert: 26.09.2005
|
erstellt am: 07. Feb. 2006 12:32 <-- editieren / zitieren --> Unities abgeben:         
Hallo Alle, wenn ich Len-Funktion benutze, warum bekomme ich maximal 65535 als Ergebnis? Wenn der Text mehr als 65535 Zeichnen enthält, wie kann ich die Länge des Textes messen? ich habe probtiert mit diesem Satzbefehl, aber funktioniert auch nicht, ich bekomme noch nlen = 65535 als Ergebnis. dim nlen as long nlen = len(text) Vielen Dank für die Antwort.
Grüße. Johan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 07. Feb. 2006 12:44 <-- editieren / zitieren --> Unities abgeben:          Nur für jo_steph
Hallo Johan, das ist nicht nachvollziehbar. Bei mir wird der richtige Wert zurückgegeben. Public Sub test() Dim x As String x = String(123456789, "x") Debug.Print Len(x) End Sub ------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Mitglied Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 07. Feb. 2006 12:45 <-- editieren / zitieren --> Unities abgeben:          Nur für jo_steph
|
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
     
 Beiträge: 7545 Registriert: 05.2002.24
|
erstellt am: 07. Feb. 2006 12:59 <-- editieren / zitieren --> Unities abgeben:          Nur für jo_steph
Korrektur: Ich lag leider falsch. Laut Hilfe ist eine Variable DIM x as string eine Variable mit variabler Länge. ------------------ APeters@BSS-Online.de
[Diese Nachricht wurde von Arne Peters am 07. Feb. 2006 editiert.] [Diese Nachricht wurde von Arne Peters am 07. Feb. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jo_steph Mitglied Student

 Beiträge: 35 Registriert: 26.09.2005
|
erstellt am: 07. Feb. 2006 13:07 <-- editieren / zitieren --> Unities abgeben:         
Hallo Nepumuk, hallo Nancy, zuerst danke für eure Antwort. Ich habe gerade das Problem gefunden, und zwar bei dem Text. Ich habe den Text als String deklariert, und habe bemerkt, dass diese String Datentyp nur 65535 Zeichen enthält. Das heißt, der TExt wird mit 65535 Zeichen begrenzt. Wenn der TExt mehr als 65355 Zeichen enthält, werden die reste Zeichen einfach nicht in der Variable Text eingefügt. Wie kann man diese String DAtentyp als variable Länge (bis ca. 2 Milliarden) deklariert? Grüße. Johan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jo_steph Mitglied Student

 Beiträge: 35 Registriert: 26.09.2005
|
erstellt am: 07. Feb. 2006 13:28 <-- editieren / zitieren --> Unities abgeben:         
|
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
     
 Beiträge: 7545 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 07. Feb. 2006 13:35 <-- editieren / zitieren --> Unities abgeben:          Nur für jo_steph
|
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 07. Feb. 2006 13:39 <-- editieren / zitieren --> Unities abgeben:          Nur für jo_steph
Hallo Johan, Strings fester länge können ~ 2^16 Zeichen aufnehmen. Strings variabler Länge ~ 2^31 Zeichen. Der Unterschied bei der deklaration: Public Sub test() Dim strTest1 As String * 65526 ' feste Länge Dim strTest2 As String ' variable Länge End Sub Was Peter schreibt, ist nicht richtig. Wenn du bei der deklaration den Datentyp nicht angibst, wird ein Variant angelegt. Der benötigt erstens mal wesentlich mehr Speicher und kann auch nicht mehr Zeichen aufnehmen. ------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jo_steph Mitglied Student

 Beiträge: 35 Registriert: 26.09.2005
|
erstellt am: 07. Feb. 2006 13:58 <-- editieren / zitieren --> Unities abgeben:         
Hallo Alle, nochmal vielen Dank für eure Antworten. Das Problem liegt nicht an der Variable oder Len-Funktion. Ich habe die Ursache des Problems gefunden, und zwar wie folgende: ich habe eine Datei geöffnet, und habe die in einem Textbox eingefügt. Danach gebe ich den Inhalt dieses Textboxes in Variable Text ein. Die Lösung ist: ich habe einfach die Reihenfolge geändert, zuerst die Datei in der Variable Text gespeichert, und dann der Inhalt der Variable in den TExtbox eingefügt. Dann habe ich gefunden, dass der Inhalt eines TExtboxes mit 65535 Zeichen begrenzt wird. Warum ist es so? ich weiß es leider nicht. Grüße. Johan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Mitglied Architekt
   
 Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 07. Feb. 2006 14:10 <-- editieren / zitieren --> Unities abgeben:          Nur für jo_steph
Hi Johan, also irgendwann ist da auch Sense bei mir, aber der String wird dann nicht belegt:
Code:
Public Sub test() Dim x As String 'On Error Resume Next 'Nicht genügend Zeichenfolgenspeicher (Fehler 14) x = String(999999999, "x") Debug.Print Len(x), LenB(x) '0 0 End Sub
Kann es sein, dass deine textvariable einfach einen 'abgeschnittenen' Text bekommt, da das Object? nicht mehr Zeichen fassen/darstellen kann? Ist zB in Acad beim MText mitunter so, deswegen die Frage, woher kommt 'text'?[edit]hach, bin ich heute wieder schnell ..., hmm, okay ..., vielleicht gehen ja mit ner RichTextBox mehr zeichen?[/edit] Gruss Nancy [Diese Nachricht wurde von startrek am 07. Feb. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jo_steph Mitglied Student

 Beiträge: 35 Registriert: 26.09.2005
|
erstellt am: 07. Feb. 2006 14:36 <-- editieren / zitieren --> Unities abgeben:         
Hi Nancy, ich habe gerade probiert, die Datei mit einem RichTextBox zu zeigen, und es hat geklappt!! Der Inhalt der Datei wird nicht abgeschnitten, wie in TExtbox. Danke für den Tipp. Gruß. Johan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |