Laden...

Kommandozeilenparameter: Gibt es Längengrenzen für Strings?

Erstellt von Seikilos vor 15 Jahren Letzter Beitrag vor 15 Jahren 4.000 Views
S
Seikilos Themenstarter:in
753 Beiträge seit 2006
vor 15 Jahren
Kommandozeilenparameter: Gibt es Längengrenzen für Strings?

Kann ich beliebig viele und beliebig lange Zeichenketten als Parameter beim Aufruf einer C# /.net exe anhängen? Oder gibt es Restriktionen von einer Seite?

Life is a short

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Seikilos,

noch wird es meistens es der Hauptspeicher sein, der die Länge der String begrenzt. Ansonsten ist String.Length ein Int32, was die Länge auf 8GB begrenzt, wobei wegen des intern verwendeten Arrays auch schon bei 2 oder 4GB Schluss sein könnte.

herbivore

S
Seikilos Themenstarter:in
753 Beiträge seit 2006
vor 15 Jahren

Danke für die Info, das hilft mir. Ich hätte vermutet, das Windows da irgendwelche Restriktionen auferlegt.

Life is a short

5.742 Beiträge seit 2007
vor 15 Jahren

Hallo Seikilos,

darf ich fragen, was du vorhast?

Mir ist kein sinnvoller Anwendungsfall von übermäßig langen Kommandozeilenparametern (diese meinst du doch, oder?) bekannt.

Wenn du große Mengen an Informationen an dein Programm übergeben möchtest, übergib ihm lieber einen Pfad zu einer Datei, welche die Informationen enthält.

S
Seikilos Themenstarter:in
753 Beiträge seit 2006
vor 15 Jahren

Access muss mit meiner Middleware kommunizieren, diese muss mit Daten gefüttert werden.

Der Access Dev kann mir keine Schnittstelle via Console bieten, weil er diese nicht abfangen kann, ergo muss ich entweder Dateien einlesen, was mehr Arbeit für mich ist, oder alles über Tausend Kommandoparameter lösen.

Es wird also niemand per Hand die Middleware aufrufen, daher ist die Menge an Parametern nicht so schön, aber eher unkritisch

Life is a short

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Seikilos,

axo, du meinst Kommandozeilenparameter. Doch, da gibt es wohl sogar sehr enge Grenzen. Früher waren das sogar nur 256 oder 1024 Zeichen oder so. Keine Ahnung wie das bei Win2k und darüber ist.

herbivore

0
767 Beiträge seit 2005
vor 15 Jahren

wenn der eine Datei schreibt, die einen "Parameter" Pro Zeile hat, dann kannsst du die mit File.ReadAllLines() einlesen und hast genau so einen string[] wie wenn du es über Kommandozeilenparameter machst. Das wäre genau eine Zeile.

loop:
btst #6,$bfe001
bne.s loop
rts

S
Seikilos Themenstarter:in
753 Beiträge seit 2006
vor 15 Jahren

Gut, dann bin ich drauf vorbereitet, danke herbivore.

Und danke für den Tipp mit der Datei 0815Coder

Life is a short

193 Beiträge seit 2006
vor 15 Jahren

.... Kommandozeilenparameter. Doch, da gibt es wohl sogar sehr enge Grenzen. Früher waren das sogar nur 256 oder 1024 Zeichen oder so. Keine Ahnung wie das bei Win2k und darüber ist.

Hier noch ein Link zu MS zu dem Thema:
http://support.microsoft.com/kb/830473

Gruß Jake

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Jake,

danke. Ich habe mal Kernaussage herausgeholt:

Auf Computern mit dem Betriebssystem Microsoft Windows XP oder höher beträgt die maximale Länge der Zeichenfolge, die Sie an der Eingabeaufforderung eingeben können, 8.191 Zeichen. Auf Computern mit dem Betriebssystem Microsoft Windows 2000 oder Windows NT 4.0 beträgt die maximale Länge der Zeichenfolge, die Sie an der Eingabeaufforderung eingeben können, 2.047 Zeichen.

herbivore