Autor Beitrag
PLuS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 98

Win XP, Suse Linux 9.0
D5 Standard, D2005 Personal; Perl; PureBasic
BeitragVerfasst: Mo 21.02.05 22:49 
Moin zusammen! ^^

Ich bin recht neu in der Delphi-Programmierung und konnte bis jetzt mit der Delphi-Hilfe und den schon hier vorhandenen Foreneinträgen auskommen (dafür schonmal DANKE! ^^)

Doch jetzt komm ich nicht weiter, oder ich steh total auf dem Schlauch!
Hier mein Problem: Ich habe eine TIdTelnet-Komponente auf meiner Form, die empfangenen Serverantworten werden in einem Memo gespeichert (nur Text).

Jetzt will ich mit dieser Antwort auch weiterarbeiten. Nur dieser empfangene Text enthält Informationen, die für meine Zwecke überflüssig sind.

Am Anfang jeder Zeile steht eine Zahl, die ich unbedingt brauche, darauf folgen mehrere Zahlen, die ich nicht brauche, und dann kommt ein Name eines Clients.

Ich brauche also nur diese beiden Informationen.
Den Namen will ich dann in einer ComboBox einfügen, wird dieser Name ausgewählt, soll das Programm quasi eine Verknüpfung zu der ID machen und damit weiterarbeiten.

Hatte schon überlegt, alles überflüssige aus dem Memo rauszulöschen, doch damit ist mir auch noch nicht geholfen und selbst da hab ich mich schon verrannt! :D

Hoffe, hier versteht jemand mein Problem! ;)
Und wär geil, wenn mir auch jemand helfen könnte! ^^

Danke schonmal im Vorraus!

PLuS

_________________
Der letzte macht die Tür zu!
schlumpf70
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Mo 21.02.05 23:10 
PLuS hat folgendes geschrieben:

Hier mein Problem: Ich habe eine TIdTelnet-Komponente auf meiner Form, die empfangenen Serverantworten werden in einem Memo gespeichert (nur Text).

Jetzt will ich mit dieser Antwort auch weiterarbeiten. Nur dieser empfangene Text enthält Informationen, die für meine Zwecke überflüssig sind.

Am Anfang jeder Zeile steht eine Zahl, die ich unbedingt brauche, darauf folgen mehrere Zahlen, die ich nicht brauche, und dann kommt ein Name eines Clients.

Ich brauche also nur diese beiden Informationen.
PLuS


Hallo, also die erster zahl dürfte ja kein problem sein zu speichern
ausblenden Delphi-Quelltext
1:
2:
p := pos(' ',memo1.lines.string[0]);
      s := copy(memo1.lines.string[0],0,p-1);


dann gehste den rest der zeile weiter durch und suchst dir den namen des clienten.

aber wenn mich nicht alles täuscht kriegste die infos doch auch anders noch oder ?

[EDIT] biost du jetz auf der server komp oder client comp ? [/EDIT]

ich schau mal

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.
PLuS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 98

Win XP, Suse Linux 9.0
D5 Standard, D2005 Personal; Perl; PureBasic
BeitragVerfasst: Mo 21.02.05 23:15 
Ich benutze die Client-Komponente, und ja, die erste Zahl krieg ich noch hin, nur dann hörts echt auf!
schlumpf70
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Mo 21.02.05 23:24 
kannst du ein beispiel posten was du als antwort kriegst ?

kriegen wir schon hin ;)
PLuS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 98

Win XP, Suse Linux 9.0
D5 Standard, D2005 Personal; Perl; PureBasic
BeitragVerfasst: Mo 21.02.05 23:30 
Erstmal schonmal Danke, dass du dich meiner annimmst! ^^

Ein Beispiel wäre:

1 509 4156 599239 46 1028 0 23 2590 1005 05 0 "0.0.0.0" "PLuS" "PLuSBrauchtHilfe"


Sagte ich schon, dass es über mehrere Zeilen geht? :D

Also von diesem Beispiel bräuchte ich quasi nur die erste "1" und das PLuS, also das in den ersten Anführungszeichen!

EDIT: Man kann die Ausgabe auch über eine Zeile lang machen, indem man die Memo-Komponente entsprechend anpasst


Zuletzt bearbeitet von PLuS am Mo 21.02.05 23:37, insgesamt 1-mal bearbeitet
schlumpf70
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Mo 21.02.05 23:36 
PLuS hat folgendes geschrieben:
Erstmal schonmal Danke, dass du dich meiner annimmst! ^^

Ein Beispiel wäre:

1 509 4156 599239 46 1028 0 23 2590 1005 05 0 "0.0.0.0" "PLuS" "PLuSBrauchtHilfe"


Sagte ich schon, dass es über mehrere Zeilen geht? :D

Also von diesem Beispiel bräuchte ich quasi nur die erste "1" und das PLuS, also das in den ersten Anführungszeichen!


mehrere zeilen ? sicher oder hast du wordwrap eingeschaltet ? wenn ja auf false setzen ;)

wen ndu es in einer zeile hast mach folgendes :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
p := pos('" "',memo1.lines.strings[0]);
        s := copy(memo1.lines.strings[0],p+3,99);
        p := pos('"',s);
        s := copy(s,0,p-1);


kanst das ganze über memo aber auch umgehen indem du dies gleich bei eingang auswertest ;)
PLuS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 98

Win XP, Suse Linux 9.0
D5 Standard, D2005 Personal; Perl; PureBasic
BeitragVerfasst: Di 22.02.05 00:02 
Also irgendwie peil ich den Code von dir noch nich so ganz! ;)

Also:
-P wird die Position des ersten Leerzeichens zugeordnet.
-S kopiert dann den String ab der Position P+3, jedenfalls 99 Zeichen daraus
-dann wird P die Position des ersten Anführungszeichens im String S zugewiesen
-in S wird dann eine Kopie von S gemacht ab Zeichen 0 bis (zum Zeichen des ersten Anführungszeichen)-1

Damit hab ich doch dann aber genau das in S, was ich nicht brauche???
schlumpf70
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Di 22.02.05 00:09 
jo genau ;)
1 509 4156 599239 46 1028 0 23 2590 1005 05 0 "0.0.0.0" "PLuS" "PLuSBrauchtHilfe"
"PLuS" << das willste ja
im ersten p wird das erste vorkommen von " " gesucht somit erhälst du durch den ersten copy ja
s = 'PLuS" "PLuSBrauchtHilfe"'

darum das 2. pos abfrage nach dem ersten " in s
und somit der 2. copy wo du dann s = s = 'PLuS' erhälst also das gewünschte ;)

oder hab ich was falsch verstanden ? :?:
PLuS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 98

Win XP, Suse Linux 9.0
D5 Standard, D2005 Personal; Perl; PureBasic
BeitragVerfasst: Di 22.02.05 00:15 
also entweder ich hab das irgendwie total falsch kopiert (omg) oder keine Ahnung!

jedenfalls nach deinem Code steht dann in P: 509 4156 599239 46 1028 0 23 2590 1005 05 0

Also hat er die ID rausgeschnitten und den Rest, wo unter anderem der Name drin steht, den ich brauche! (das was ich brauche)

Aber jedenfalls weiss ich jetzt ungefähr wie ich vorgehen muss! Danke
schlumpf70
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Di 22.02.05 00:28 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
p := pos('" "',memo1.lines.strings[0]);  
        s := copy(memo1.lines.strings[0],p+3,99);  
        p := pos('"',s);  
        s := copy(s,0,p-1);

// 1 509 4156 599239 46 1028 0 23 2590 1005 05 0 "0.0.0.0" "PLuS" "PLuSBrauchtHilfe"

p sucht das erste vorkommen von " " also findet er die pos von "
in s hast du also die zeile dann PLuS" "PLuSBrauchtHilfe"
das 2. p ermittelt die position von " in s also copierst du aus den s dann den teil PLuS

oder brauchst du was anderes und ich habe es falsch verstanden ?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var p : integer;
    s : string;
begin

p := pos('" "',memo1.lines.strings[0]);
        s := copy(memo1.lines.strings[0],p+3,99);
        p := pos('"',s);
        s := copy(s,0,p-1);
end;


also bei mir ist dann in s PLuS
PLuS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 98

Win XP, Suse Linux 9.0
D5 Standard, D2005 Personal; Perl; PureBasic
BeitragVerfasst: Di 22.02.05 15:21 
LOL! Ja natürlich stimmt, ich hab mich da total überlesen!
Ich hatte ' ' anstatt '" "' gelesen!
Ja vielen Dank, hab mich da gestern auch nochmal mit ner schönen Tasse Kaffee drangesetzt und habs dann doch hinbekommen, dein Weg is aber einfacher, aber vielen Dank!

Da stand ich wohl doch ein wenig auf dem Schlauch!

Vielen, vielen Dank!

PLuS