AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Delphi an das Ende eines memo's einen doppelpunkt setzen
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi an das Ende eines memo's einen doppelpunkt setzen

Ein Thema von Lyan · begonnen am 27. Dez 2011 · letzter Beitrag vom 29. Dez 2011
Antwort Antwort
Seite 2 von 2     12   
Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#11

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 21:21
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:USERASS

Beispiel:
Code:
888.888.888:username:passwort
533.45.2342.3:usr2:pw123
223.234.123.3:usss:pwww
Ich versuche momentan halt anhand des doppelpunktes die IP, den USERNAME und das PASSWORT auseinander zu halten.

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:
888.888.888:username:passwort:
533.45.2342.3:usr2:pw123:
223.234.123.3:usss:pwww:
Wenn ich davon ausgehe, dann läuft mein Prog. so:

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:
888.888.888:username:passwort:533.45.2342.3:usr2:pw123:223.234.123.3:usss:pwww:
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).

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:
888.888.888:username:passwort
533.45.2342.3:usr2:pw123
223.234.123.3:usss:pwww
Dann muss ich ja noch Doppelpunkte setzen (vorher).
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

Geändert von Lyan (27. Dez 2011 um 21:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 21:29
Gehe das Memo oder die Stringliste zeilenweise durch und wende auf jede Zeile Hier im Forum suchenExplode. 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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 21:30
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
Michael Kübler
  Mit Zitat antworten Zitat
Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#14

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 21:35
Gehe das Memo oder die Stringliste zeilenweise durch und wende auf jede Zeile Hier im Forum suchenExplode. 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.
Wenn ein Doppelpunkt gesetzt ist, weiß ich schon wo ein neuer Datensatz anfängt.

Denn das Format ist ja hart :"IP:USERNAMEASS".

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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#15

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 21:36
Ach das ist unnötig kompliziert. Warum guckst du dir meinen Vorschlag mit Explode nicht mal richtig an?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#16

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 21:41
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
blauweiss

Registriert seit: 19. Jun 2007
142 Beiträge
 
#17

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 27. Dez 2011, 22:29
Habe es nun so gemacht:

Code:
  for i := 1 to memo1.Lines.count do
  begin
    ...
    application.ProcessMessages;
  end;
Es ist nicht sinnvoll, application.ProcessMessages in jedem Schleifendurchlauf aufzurufen.
Genauer gesagt ist es überhaupt nicht sinnvoll, application.ProcessMessages zum alleinigen Zweck einer Anzeigeaktualisierung aufzurufen.

Gruss,
blauweiss
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.142 Beiträge
 
Delphi 10.3 Rio
 
#18

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 28. Dez 2011, 02:52
WOW soviele Ideen!

Wie wäre es mit:

 Memo1.Lines.Text := StringReplace(Memo1.Lines.Text,#13#10,':'+#13#10,[rfReplaceAll]); Mavarik
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#19

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 28. Dez 2011, 08:50
Schreib das, was Du machen willst, doch einfach mal in der Sprache Delphi (statt Deutsch) auf:
Delphi-Quellcode:
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;
Dann noch die beiden Methoden 'ExtractFromCode' und 'CanReachIP' schreiben.
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.
  Mit Zitat antworten Zitat
Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#20

AW: Delphi an das Ende eines memo's einen doppelpunkt setzen

  Alt 29. Dez 2011, 02:25
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:33 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