AnsiStrings nach a-f und 0-9 filtern (Erledigt)
-
Guten Abend Netzbürger.
Ich stehe mal wieder vor einem Problem.
Ich habe ein RichEdit Element in dem ich einen langen Text habe. In diesem Text befinden sich auch 32 Zeichen lange MD5-Hashes.Diese hashes will ich in ein anderes Element (StringGrid) filtern. Die habe ich bisher gemacht mit
if (astrText.Length() == 32) { StringGrid1->Cells[1][x] = astrText; StringGrid1->Cells[0][x] = IntToStr(x); }Jedoch befinden sich in dem RichEdit auch andere 32 Zeichen lange Zeilen, die durch meinen zugegeben simplen Filter "duchfallen".
Nun meine Frage:
Wie kann ich festlegen das der AnsiString astrText nur die Kleinbuchstaben a bis f und die Zahlen 0 - 9 enthält?Ich danke schonmal für eure Bemühungen!
Tippo
-
Ein Beispiel:
if (astrText.Length() == 32) { for (int i = 1; i <= 32; i++) { if ((isdigit(astrText[i]) || (astrText[i] >= 'a' && astrText[i] <= 'f')) == false) { ShowMessage("String passt nicht."); break; } } }
-
Hallo, und danke für die Antwort noch so spät in der Nacht!
Ich stehe leider voll auf dem Schlauch. Deinen Code verstehe ich, und für den Fall das ich ihn richtig verstehe sollte er auch genau das machen was ich suche, aber er macht es nicht -.-'
Ich habe jetzte:
if (astrText.Length() == 32) { for (int i = 1; i <= 32; i++) { if ((isdigit(astrText[i]) || (astrText[i] >= 'a' && astrText[i] <= 'f')) == false) { StringGrid1->Cells[1][x] = astrText; StringGrid1->Cells[0][x] = IntToStr(x); break; } } }Ich ziehe das mal am Beispiel hoch: In der RichEdit --> also dann auch im astrText sind z.B
user_lastpage varchar(100) NULL f2f464884b9fb939bf231829a0e6eb0fWenn ich den Code jetzt wie oben verwende, denn sind aber nur noch die falschen Ergebnisse in meinem StringGrid zu finden, die Hashes fehelen komplett.
Ich danke schonmal.
Tippo
-
Jansen schrieb:
Ein Beispiel:
if (astrText.Length() == 32) { for (int i = 1; i <= 32; i++) { if ((isdigit(astrText[i]) || (astrText[i] >= 'a' && astrText[i] <= 'f')) == false) { ShowMessage("String passt nicht."); // HIER !!!! :D break; } } }Hallo,
da wo "HIER !!!! :D" steht bitte mal genau lesen

mfg, Micha!
-
Jetzt wirds peinlich...
Aber was sollsif (astrText.Length() == 32) { for (int i = 1; i <= 32; i++) { if ( (isdigit(astrText[i]) || (astrText[i] >= 'a' && astrText[i] <= 'f')) == false ) { // habs kapiert, string passt nicht, dank RandomAccess85 netten Worten ^^ } else { StringGrid1->Cells[1][x] = astrText; StringGrid1->Cells[0][x] = IntToStr(x); break; } } }Bringt auch nicht das gewünschte Resultat,
user_lastpage varchar(100) NULL
f2f464884b9fb939bf231829a0e6eb0fsind beide immer noch im Output (in der StringGrid), obwohl da nur der hash sein sollte.
Muss ich vielleicht irgendwas mit ! (is not) ausdrücken?
-
Tippokrates schrieb:
für den Fall das ich ihn richtig verstehe
Offenbar nicht.
In der for-Schleife werden die einzelnen Zeichen des Strings geprüft. Wenn eines der Zeichen die Bedingungen nicht erfüllt, wird die Schleife abgebrochen.
Und erst nach Abschluss der Schleife kannst du entscheiden, was mit dem String passieren soll.
-
if (astrText.Length() == 32) { blUseText = true; for (int i = 1; i <= 32; i++) { if ( (isdigit(astrText[i]) || (astrText[i] >= 'a' && astrText[i] <= 'f')) == false ) { blUseText = false; break; } } if (blUseText = true) { StringGrid1->Cells[1][x] = astrText; StringGrid1->Cells[0][x] = IntToStr(x); } }ich hab jetzt einen Varaible vom Typ bool eingeführt, die soll false sein, wenn deine (akaris) for-Schleife ein Ergebnis bringt (und breakt)
Gleich im Anschluss regele ich die Ausgabe, wenn blUseText = true, dann soll die Ausgabe erfolgen. Ihr proggt sicher schon länger als ich, ihr versteht schon was ich da im QT schreibe, und vlt sehr ihr auch, warum es nicht funzt so wie ich mir das vorstelle.Sry, das ist für mich echt ein Härtefall.
Tippo
-
Hallo
wenn deine (akaris) for-Schleife ein Ergebnis bringt (
Nicht meine, Jansens

Du hast Zuweisung und Vergleich verwechselt
if (blUseText == true)bis bald
akari
-
Oh man bin ich blöd! Und das auch noch in zweierlei Hinsicht:
(1) klar, mit nem doppel-gleich passt es auch, Prob gelöst, dank euch allen
(2) Sry Jansen, allein das Problem zeigt schon das ich grad nicht gut drauf bin...
Also Leute, was würde ich nur ohne euch machen! Meine Progger-Helden

MfG
Tippo