Wie genau kann ich feststellen welche anzahl ich für z.b string nehmen muss ??
Kann mir das vielleicht jemand anhand eines befehls zeigen ?
Wäre echt nett. Hab satt immer ins GF gucken zu müssen ! -.-
z.b new string[anzahl];
- Stylernero
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Die "anzahl" ist die maximale Länge des Textes, den du einspeichern möchtest.
Also bei "Hallo ich bin da" wären es 16.
Also string[16].Hoffe ich konnte dir helfen.
mfg.
Opa -
Solang der String danach ist, z.B. kannst du sicher sagen, dass string nicht länger als 30 Zeichen sein kann (z.B. Username), dann kannst du string[30] machen, ist es aber ein ganzer Satz, würde cih string[100] machen.
-
Was für ein string wäre es bei diesen Sätzen:
format(string,sizeof string,"AdmCmd: %s wurde von %s gebannt. Grund: %s.",spieler2,spieler,grund)
SendClientMessageToAll(adminrot,string)
format(string,sizeof string,"AdmCmd: Du wurdest vom Admin %s gebannt und kannst nun nicht mehr connecten.",spieler);
SendClientMessage(pID,adminrot,string); -
Wie Grex sagte, am besten immer größere Strings nehmen also bei dir kannst auch schon string[100] nehmen.
Dann brauchst beim nachbearbeiten ned drauf achten.mfg.
Opa -
Wenn es z.b im string text 189 buchstaben sind kann ich string[200]; nehmen ?
-
Naja die zahl bestimmt die länge des strings. Also bustaben, zahlen etc.
Da ein Name maximal 24 Zeichen lang sein kann/darf, nimmt man für namen normal ne länge von 24 oder direkt MAX_PLAYER_NAME, was das gleiche ist.normale nachrichten die mit SendClientMessage ausgegeben werden können maximal 128 zeichen enthalten. Also wenn du da keine genau größe hast ist 128 die richtige wahl. Ansonsten kannst du das nachrechnen.
Wenn du z.b
format(string,sizeof(string),"Der Spieler %s Hat den server Betreten.",Name_Des_Spielers);
SendClientMessage(playerid,FARBE_WEIß,string);ausgeben willst, kannst du das einfach zusammen rechnen.
Der Spieler -> 13 Zeichen (das leerzeichen am ende ist mit gezählt)
%s -> 24 (Da das %s ja durch einen namen ersetzt wird, und wir wissen das ein Name maximal 24 Zeichen lang sein kann)
Hat den server Betreten. -> 25 (das Leerzeichen am anfang wird natürlich auch wieder mit gezählt)
+1 Weil immer einer dazu gerechnet wird. Ich weiss grad nicht genau warum aber vllt antwortet ja noch jmd hier drauf der das weiss^^
mach zusammen 12+24+25+1.
Also machst du:
new string[12+24+25+1];
bzw direkt
new string[62];ZitatWie Grex sagte, am besten immer größere Strings nehmen also bei dir kannst auch schon string[100] nehmen.
Das halte ich für ein gerücht. Mag vielleicht zu GF zeiten gang und gebe gewesen sein die strings immer extra groß zu machen, und nur werte ala 128,256 etc zu benutzen. Aber Sinnvoll wäre es immer nur so groß zu machen wie wirklich benötigt wird. -
Ja, du sagst ja string hat 200 Zeichen. Genauso wenn du ein Schulheft kaufst mit 20 Seiten und nur 15 Seiten benötigst, kannst trotzdem darin schreiben
-
Sinnvoll ist es ! stimmt, aber es ist trotzdem möglich da 128 oder 256 zu nehmen oder ?
-
-
-
Ja ist es
Die Zahl darf nur ned kleiner sein wie die Länge des Textes was gespeichert wird. -
Alles klar !! Danke euch allen ! Damit habt ihr mir viel Zeit erspart. Danke auch an Maddin für die perfekte Beschreibung. Hab sie gespeichert.
DANKE !! -
Theoretisch kannst du Strings gleich auf 1024 oder höher festlegen, damit du nie mit einer Begrenzung Probleme bekommen würdest.
Praktisch rate ich davon dringend ab, denn der Arbeitsspeicherverbrauch verhält sich proportional zur Stringgröße. Das würde nicht nur die Größe deiner AMX Datei vergrößern, sondern beim Laufen des Servers mehr Ressourcen beanspruchen. -
breadfish.de
Hat das Thema geschlossen.