Welche Programmiersprache?

Die Funktion InStr(durchsuchter string, gesuchter string) überprüft, ob ein String in einem anderen enthalten ist und gibt einen Boole-Wert aus. Ist es das, was du meinst? <edit>ich muss mich korrigieren..InStr gibt sogar die Position zurück, keinen Boole-Wert</edit>

Zu dem Zeilenumbruch:
Einerseits kannst du alles mit Console.WriteLine(ausgabe) zeilenweise schreiben, oder mit VbCrLf eine neue Zeile anfangen zB:

Code:
Console.Write(VbCrLF & "eine ausgabe" & VbCrLf & "und eine in der nächsten zeile")

hoffe ich konnte helfen, Backslash

PS: ich bin inwischen auf C# umgestiegen, hat mir noch besser als VB gefallen und die ganzen Befehle wie Console.Write() etc. sind ja die selben dank .Net, man muss sich halt an die andere Syntax außenrum gewöhnen :D
 
Zuletzt bearbeitet:
also wie du bestimmt mitbekommen hast, steh ich am Anfang von VB.
Würdest du empfehlen mit C# anzufangen, bzw. umzusteigen?
wenn ja, aus welchen Grund?

Wegen Zeilenumbrüchen:
ich hab einen Textdatei in der mehrer Hochkommas (') enthalten sind, diese will ich praktisch durch einen Zeilenumbruch ersetzen.
Aber ich denke mit deiner Antwort komm ich weiter.

die funktion InStr kommt schon hin. Bloß ich bräuchte die position in dem String.
Denn das ganze sieht so aus:


'SEQ+3+018985'

ich will praktisch nach 'SEQ+3+ suchen und dann die zahl 018985 in eine Variable schreiben.
denn das 'SEQ+3+ bleibt gleich und das 018985 ändert sich.
 
Ob du umsteigen solltest hängt davon ab, was du machen willst. Wenn du hauptsächlich Programme in dieser Art schreiben willst ist VB.Net vermutlich die bessere Wahl.
Wenn du etwas Professioneller arbeiten willst bietet C# vielleicht einige Funktionen mehr (ich habe bisher keine gebraucht).
Außerdem kann man mit VB vermutlich etwas schneller arbeiten und der Code ist schön einfach, ist ja fast nur Englisch :) und kürzer, als in C#.

Die "'" durch zeilenumbrüche ersetzen kannst du ja mit Replace(string, find, replace) :

Code:
beispielstring = Replace(beispielstring, "'", vbCrLf)

Das mit dem String überleg ich mir nacher, jetz geh ich erstmal essen ;)

mfg Backslash
 
Zuletzt bearbeitet:
ghorst schrieb:
auch in fortran, cobol oder asm? bitte vermeide es von absolutheiten zu reden, wenn keine gegeben sind. du kannst die meisten sprache mit regulären ausdrücken nachrüsten bzw. sie können es von haus aus. nicht mehr aber auch nicht weniger.
btw. das schreit nicht nach regulären ausdrücken. man kann es auch ohne mühe mittels endlichen automaten darstellen. (ich weiß, dass man das eine in das andere umwandeln kann, nur wären hier endliche automaten die einfachere lösung.)

Ok, jetzt klugscheiße ich auch mal:
ASM == Assemblersprache != Programmiersprache. Zudem hat er im 1. Beitrag erklärt, welche Sprache er schon beherrscht. Dir sollte klar sein, dass er wegen so ein winziges Problem, wohl kaum Cobol oder Fortran lernen wird.

Und für _mich_ ist RE einfacher und zeilensparender, zumindest in den Sprachen, die ich im Moment hauptsächlich benutze.

UnBreakable schrieb:
naja ich will das eigentlich nicht mit PHP realisieren, weil ich nicht immer einen Webserver laufen lassen will und für solche aufgaben PHP nicht erschaffen wurde.
und ich glaube mit PHP ist das nicht soweit möglich.?
Auch wenn ich kein Fan von PHP bin, es läuft auch ohne Webserver. Einfach mit "php.exe script.php" starten. Oder eben die Dateien mit der Extension ".php" automatisch mit den PHP-Interpreter starten lassen.

Zum eigentlichen Problem:
Code:
SEQ\+3\+(\d+)
Das ist der Regulärer Ausdruck, um nach deiner Sequenz zu suchen, mehr nicht. Keine Ahnung wie es bei VB aussieht, aber bei python würde es so aussehen:
Code:
re.compile('SEQ\+3\+(\d+)').findall(text_in_dem_gesucht_werden_soll)
Ergebnis ist eine Liste: ['018984', '018985', '018986', '018987', ...]
Ein klassischer Einzeiler :)
 
Zuletzt bearbeitet:
Also ich hab da mal nochmal was geschrieben:

Code:
Dim test = "bchfjdbfirsohsdfbhSEQ+3+12345hfhwsrbiuxc"
Dim pos
Dim zahl
pos = InStr(test, "SEQ+3+")
zahl = Mid(test, pos + 6, 5)

In zahl hast du jetzt die gesuchte Zahl. Ich weiß nicht ob das bei dir so ist, ich bin mal davon ausgegangen, dass die Zahl immer gleich viele Stellen hat, in diesem Fall 5.
Bei der Funktion "Mid(string, beginn, länge)" musst du noch die Länge anpassen, je nachdem wie viele Stellen die Zahl hat.

mfg Backslash
 
Zuletzt bearbeitet:
Ok, erstmal vielen Dank für all eure Antworten!

Auch wenn ich kein Fan von PHP bin, es läuft auch ohne Webserver. Einfach mit "php.exe script.php" starten. Oder eben die Dateien mit der Extension ".php" automatisch mit den PHP-Interpreter starten lassen.

Naja ich bin trotzdem der Meinung, hier ist PHP fehl am Platz.

@Backslash vielen Dank, deine 2 Antworten, waren genau das, was ich hören wollte :))
Wenn ich könnte, würd ich dir jetzt ein Bier ausgeben ;)

Ich denke weiteres kann ich erstmal selber lösen. (dass eben 100 Dateien eingelesen und verglichen werden)

Ansonsten meld ich mich wieder!
 
Ok, jetzt hab ich schon das 1. Problem:

die Dateien die ich einarbeiten will haben ein anderes Format als erwartet:

ich dachte es sieht so aus:

statischername_fortlaufendenummer.dat

ich konnte die dateien einfach einlesen indem ich die fortlaufendenummer + 1 zählen lies.

Nun ist mein Problem dass das ganze so aussieht:

statischername_erstellungsdatum_erstellungsuhrzeit_fortlaufendenummer.dat


die Daten müssen aber unbedingt in der richtigen reihenfolge eingelesen werden!
(nach fortlaufender nummer aufsteigend)

Wer hat einen Vorschlag wie dieses Problem zu lösen ist?

EDIT: Ich hab das Problem jetzt so gelöst, ich überprüf zu jeder Nummer, ob die Uhrzeiten 00:00:00 bis 24:00:00 vorhanden sind. Das funktioniert zwar, dauert aber sehr lange, hat evt. jemand ne bessere lösung?

EDIT2: Ich hab das Problem gefunden: Ich setzte jetzt den Zähler nicht jedes mal wieder auf 0 zurück, jetzt läuft das ganze Programm in einer angemessenen Zeit ab.
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben