String-Problem...
Übersicht

CO2ehemals "SirMO"Betreff: String-Problem... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
sry wegen des Komischen Titels, aber mit ist kein besserer eingefallen. Mein Problem: Ich benutze Readline() um eine Zeile aus einer Datei auszulesen. Jetzt ist die Zeile aber Variabel und kann vom Nutzer geändert werden. Ich möchte nur wissen, ob überhaupt etwas in der zeile steht. Also habe ich folgende bedingung geschrieben: Code: [AUSKLAPPEN] If anfangderdatei2 > 0 Then Print "Funktion Vollständig!" Print "Missionsname: '" + anfangderdatei2 + "'" WaitKey() End Else Print "Error: Die Funktion ist nicht Vollständig!" Print "Die Datei kann nicht kompiliert werden, bitte überprüfen!" Print "Zum Beenden bitte eine Taste drücken" Print "(C) by Otto-Soft Productions" WaitKey() End EndIf leider funktioniert das nicht nos wie ich mir das vorgestellt habe. Es kommt immer nur das raus, was hinter dem Else steht, egal wieviel in der Datei steht. Und noch eine Frage zu ReadLine(): ich habe schon vor dem gesendenten code einmal Readline geschrieben. 'Weiß' das Readline in meinem gesendeten Code nun, dass es erst die 2. zeile in der datei lesen soll? |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzBasic: [AUSKLAPPEN] If String <> "" Then Print "Yihaa!" |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, thx, manchmal ist die Lösung so einfach | ||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: 'Weiß' das Readline in meinem gesendeten Code nun, dass es erst die 2. zeile in der datei lesen soll? Der "Zeiger" wird in der Datei automatisch weiter geschoben. Um ihn per Hand auf eine andere Position zu stellen kann man Seekfile![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
D2006 hat Folgendes geschrieben: BlitzBasic: [AUSKLAPPEN]
If String <> "" Then Print "Yihaa!" Ist Len() nicht schneller und sollte bevorzugt genutzt werden? |
||
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Pac-Man hat Folgendes geschrieben: D2006 hat Folgendes geschrieben:
BlitzBasic: [AUSKLAPPEN]
If String <> "" Then Print "Yihaa!" Ist Len() nicht schneller und sollte bevorzugt genutzt werden? Ich weiß nicht, welcher Befehl schneller ist, aber falls es überhaupt einen Unterschied geben soll, dann wird dieser wohl verschwindend gering ausfallen. Ich finde die "If Nichts" Variante wie in dem Beispiel am Besten und verwende es auch selber so, weil es am Logischsten ist. Die Frage ist ja, "ist etwas da oder nicht" ? Das kann man am naheliegendsten in Basic übersetzt mit "If String ist Nicht Nichts" beschreiben. Die Frage nach Länge ist was Anderes, das selbstverständlich indirekt auch eine Antwort darauf gibt, ob da überhaupt was ist, weil Länge Null ist gleich nichts. Aber es ist eben nur indirekt. Für mich ist diese Sichtweise, möglichst direkt den menschlichen Gedanken in Code umzusetzen wichtig, weil bei großen Projekten jedes Bißchen Plus an Verständlichkeit - oder besser gesagt die Geschwindigkeit, in dem man beim darüberfliegen den Code verstehen kann - vorteilhaft. Außerdem für Anfänger ist diese direkte Umsetzung einer Fragestellung ganz besonders empfehlenswert. |
||
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
so schwer ises nun auch nich zu verstehen wenn man len verwendet ![]() ich würde die schnellere variante empfehlen und verwenden wobei ich kA habe welche schneller ist ![]() müsste man halt einfach ma rausfinden, ich muss jetzt aber los . cu ![]() |
||
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich in eine Zeile einen TAB haue ist der String nicht leer und es steht dennoch nichts drin. Auf jeden Fall sollte Len() verwendet werden um herauszufinden ob der String etwas lesbares enthält oder leer ist (Len() = 0) oder nur Steuerzeichen enthält (myString = Chr(9)). Wenn man aber unbedingt auf "" testen möchte sollte man das ReadLine() noch in ein Trim fassen...
BlitzBasic: [AUSKLAPPEN] myString$ = Trim(ReadLine()) Der Code in Deinem Post zeigt auch nicht das Problem, am besten ist es immer zu beschreiben was man exakt machen möchte um eine detaillierte Hilfe zu bekommen. |
||
Farbfinsternis.tv |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
also soweit ich weiß zählt len alle zeichen mit... auch sonderzeichen. genau so ist auch "[Tabulator]"<>"" | ||
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Silver_Knee hat Folgendes geschrieben: also soweit ich weiß zählt len alle zeichen mit... auch sonderzeichen. genau so ist auch "[Tabulator]"<>""
Exakt das schrub ich doch gerade ... noch nicht gelobt worden heute? |
||
Farbfinsternis.tv |
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nein, du "schrubst" genau das gegenteil farbfinsternis ![]() bei dir klingt es so als würde len das problem lösen, dass ein tab nicht als leerer string gesehen wird ein string der nur aus tab besteht hat jedoch die länge 1, nicht 0 len bringt was das angeht also keinen vorteil (und keinen nachteil... es ändert einfach nichts an dem problem) |
||
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
BBPro2 hat Folgendes geschrieben: nein, du "schrubst" genau das gegenteil farbfinsternis
![]() bei dir klingt es so als würde len das problem lösen, dass ein tab nicht als leerer string gesehen wird ein string der nur aus tab besteht hat jedoch die länge 1, nicht 0 len bringt was das angeht also keinen vorteil (und keinen nachteil... es ändert einfach nichts an dem problem) Nein, genau das habe ich nicht geschrieben. Und Len() löst das Problem dass ein String ,mittel ="" Vergleich nicht als leer angesehen wird. Code: [AUSKLAPPEN] myString$ = Chr(9) ; ein TAB im String If myString = "" ; trifft nicht zu, der String ist nicht leer If Len(myString) > 0 ; trifft zu, die Länge ist 1 Einfach blos lesen bringt nichts wenn man hinterher das verstehen vergißt. |
||
Farbfinsternis.tv |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bist du ein wenig verwirrt, Farbfinsternis? Ist ja auch ziemlich heiss die Tage ![]() Nichts für ungut, aber: Code: [AUSKLAPPEN] If myString = ""
Das prüft, ob ein String gar nix enthält - auch keine Steuerzeichen. Code: [AUSKLAPPEN] If Len(myString) > 0
Das prüft, ob ein String irgendwas enthält - egal was. Du machst also zwei total verschiedene Sachen. Len ![]() ![]() BlitzBasic: [AUSKLAPPEN] Local myString$ = Chr(9) So. Ich denke, somit wurde alles zum Thema gesagt. mfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group