AW: Delphi an das Ende eines memo's einen doppelpunkt setzen
Also um mal kurz zu erwähnen was ich machen möchte:
Das Programm wird ein FTP-Checker. Man soll eine Liste angeben können in folgendem Format: IP:USER:PASS Beispiel:
Code:
Ich versuche momentan halt anhand des doppelpunktes die IP, den USERNAME und das PASSWORT auseinander zu halten.
888.888.888:username:passwort
533.45.2342.3:usr2:pw123 223.234.123.3:usss:pwww Problematik liegt halt an meinen Kenntnissen. Ich zeige euch mal wie ichs mit meinen wenigen Kenntnissen versucht habe zu Lösen: Also im Idealfall sollte mein Kod so aussehen:
Code:
Wenn ich davon ausgehe, dann läuft mein Prog. so:
888.888.888:username:passwort:
533.45.2342.3:usr2:pw123: 223.234.123.3:usss:pwww: Ich entferne zunächst mal "#$D#$A" in dem Memo mit stringreplace und schreibe den neuen Inhalt in einen String. Dieser String sieht dann ja so aus:
Code:
Nun ermittle ich mit Pos() den ersten Doppelpunkt und kopiere mit Copy() die IP (also die "888.888.888") und schreibe sie in meine Variable (sIP).
888.888.888:username:passwort:533.45.2342.3:usr2:pw123:223.234.123.3:usss:pwww:
Nun lösche ich per Delete() die IP und den dazugehörigen Doppelpunkt (888.888.888:). Ja und in einem Schleifendurchgang werden immer "IP,USERNAME,PASSWORD" ermittelt und auf Verbindung getestet. Wenn eine Verbindung möglich war, so wird in eine Strinlist die Daten hinzugefügt. Also "Strlist.add(IP+USER+PASS+#13#10); Nun das Problem: Wenn meine Liste nun so aussehen würde:
Code:
Dann muss ich ja noch Doppelpunkte setzen (vorher).
888.888.888:username:passwort
533.45.2342.3:usr2:pw123 223.234.123.3:usss:pwww Und mit der eben genannten Methode, nerven wieder diese "#$D#$A". Hat jemand eine Idee wie ich die Liste in mein Idealformat bekomme? Oder weiß jemand, wie ich sowas vlt. auf eine ganz andere, viel bessere Art und Weise Lösen könnte? MfG |
AW: Delphi an das Ende eines memo's einen doppelpunkt setzen
Gehe das Memo oder die Stringliste zeilenweise durch und wende auf jede Zeile Explode. Dann hast du die Bestandteile zerlegt in einem Array stehen.
Da durch, dass du die Zeilenumbrüche löschst, machst du es dir nur unnötig schwer, weil dann weißt du ja nicht mehr so einfach, wo ein neuer "Datensatz" anfängt und aufhört. |
AW: Delphi an das Ende eines memo's einen doppelpunkt setzen
Nimm doch eine typisierte Textdatei und arbeite mit Records...
Eventuell würde es sich noch anbieten, das Passwort zu verschlüsseln bzw. "unkenntlich" zu machen - ohne jetzt hier wieder eine Diskussion über Verschlüsselung anzuzetteln :-) |
AW: Delphi an das Ende eines memo's einen doppelpunkt setzen
Zitat:
Denn das Format ist ja hart :"IP:USERNAME:PASS". Und da ich ja die abgearbeiteten Daten immer nachlösche, ist somit mein nächster Datensatz immer der aktuelle. Ich brauche nur eine Antwort darauf: Wie kann ich an jedem Zeilenende ein ":" einfügen, ohne dass dabei die "#$D#$A" mitgelesen werden? Aber vielen Dank für eure Mühe :) |
AW: Delphi an das Ende eines memo's einen doppelpunkt setzen
Ach das ist unnötig kompliziert. Warum guckst du dir meinen Vorschlag mit Explode nicht mal richtig an?
|
AW: Delphi an das Ende eines memo's einen doppelpunkt setzen
Es gab da mal ein paar kluge Leute, die haben sich viele Gedanken gemacht, wie man Daten in einer Textdatei speichert.
Diese Leute fanden es sehr geschickt ein Feldtrennzeichen und ein Satztrennzeichen zu benutzen. Das Format nannten sie dann CSV. Natürlich kann man das Rad neu erfinden ... aber ein Zwang besteht nicht |
AW: Delphi an das Ende eines memo's einen doppelpunkt setzen
Zitat:
Genauer gesagt ist es überhaupt nicht sinnvoll, application.ProcessMessages zum alleinigen Zweck einer Anzeigeaktualisierung aufzurufen. Gruss, blauweiss |
AW: Delphi an das Ende eines memo's einen doppelpunkt setzen
WOW soviele Ideen!
Wie wäre es mit:
Delphi-Quellcode:
Mavarik
Memo1.Lines.Text := StringReplace(Memo1.Lines.Text,#13#10,':'+#13#10,[rfReplaceAll]);
|
AW: Delphi an das Ende eines memo's einen doppelpunkt setzen
Schreib das, was Du machen willst, doch einfach mal in der Sprache Delphi (statt Deutsch) auf:
Delphi-Quellcode:
Dann noch die beiden Methoden 'ExtractFromCode' und 'CanReachIP' schreiben.
For i:=0 to MyIPList.Count -1 do begin
ExtractFromCode(MyIPList[i], IPAddress, UserName, Password) If CanReachIP(IPAddress) then MyStringList.Add(IPAddress+':'+UserName+':'+Password); end; ExtractFromCode nimmt einen String der Form IP:User: Pass[...] und extrahiert IP, User und Pass. Sonderzeichen nach dem 'Pass' werden ignoriert. CanReachIP prüft, op eine IP-Adresse erreichbar ist und liefert True, sonst False. Optional könnte ein Logeintrag erzeugt werden. |
AW: Delphi an das Ende eines memo's einen doppelpunkt setzen
Habe ganz vergessen mich bei euch allen ganz herzlich zu bedanken!
Ich habe viele eurer Ideen wahrgenommen und ein paar Dinge miteinander kombiniert. Bin mit dem Ergebnis sehr zufrieden! Danke euch allen vielmals! :) MfG Lyan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz