AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeichen aus einem String filtern/löschen

Ein Thema von Blubbel · begonnen am 29. Nov 2011 · letzter Beitrag vom 2. Dez 2011
Antwort Antwort
Seite 3 von 5     123 45      
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Zeichen aus einem String filtern/löschen

  Alt 30. Nov 2011, 13:23
das ist das womit wir es machen sollen hatte den doppelpunkt wohl immer übersehen... so langsam macht mir diese aufgabe keinen spaß mehr

Also das ist irgendwas fürn server was der ausspuckt wie ich das verstanden habe und wenn man das in der eingabeaufforderung eingibt soll das dann gekürzt sein auf eine bestimmte zeilen länge... wieso ich das erst splitten soll keine ahnung
Ich nehme jetzt mal stark an, du hast da ein paar ganz entscheidende Sachen im Unterricht nicht mitbekommen.
Das hört sich irgendwie nach "Geh mah und hol wat zum Kuchen backen" denn ausser "Kuchen" ist hier nix klar.
Versuch mit der Information mal die Zutaten für den Kuchen zu kaufen. Richtig, geht auch nicht.

Also mal die Mitschüler oder auch den Lehrer gefragt.
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
Benutzerbild von Luckie
Luckie

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

AW: Zeichen aus einem String filtern/löschen

  Alt 30. Nov 2011, 14:22
Also so schwer ist das ja eigentlich nicht. In die Funktion rein geht der String vom Server, wahrscheinlich wird da was geloggt. Rauskommen soll der in seine Bestandteile zerlegte String.

procedure SplitLogLine(LogLine: string; out TimeStamp: string; out Indent1: string; out Indent2: string; out LogMessage: string); Das sagt eigentlich schon alles, was passieren soll.

Jetzt haben wir noch den Aufbau von dem String der vom Server kommt:
Code:
[TimeStamp]:<Indent1><Indent2>LogMessage
Mit Pos und PosEx kann ich jetzt nach "[", "]", "<" und ">" suchen und mit Copy die Bestandteile in die out Parameter kopieren. Kein Problem. Eigentlich nur eine Fingerübung, wenn da jetzt nicht noch eine kleine Gemeinheit wäre. So wie es aussieht, ist Inden2 optional, also nicht in jeder LogLine enthalten. Aber auch das lässt sich lösen, in dem man eine Fallunterscheidung macht in Abhängigkeit von der Anzahl der "<".

Ich denke, das sollte auch für einen Anfänger lösbar sein. Sieh und Zweck der Übung ist es wohl, dass ihr die Zeichenmanipuilationsroutinen (Pos, PosEx, Copy, Delete) von Delphi kennen lernen sollt.

So, deswegen guck mal in der Hilfe, was die Routinen machen und wie man sie anwendet. Wenn du das verstanden hast, sollte es kein Problem sein, die Aufgabe zu lösen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#23

AW: Zeichen aus einem String filtern/löschen

  Alt 30. Nov 2011, 14:41
Danke!!!
Ich hatte mir auch grad was überlegt:
Wenn ich immer nach diesen Zeichen es in einem Buffer speichern lasse und ab dem zeichen was grad ausgemacht wurde weiter suche usw. Das könnte doch auch gehen...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Zeichen aus einem String filtern/löschen

  Alt 30. Nov 2011, 14:48
Was für ein Buffer?

Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  LINE = '[TimeStamp]:<Indent1><Indent2>LogMessage';

function ExtractTimeStamp(LogLine: string): string;
var
  Start, Stop: Integer;
begin
  Start := Pos('[', LogLine);
  Stop := Pos(']', LogLine);
  Result := Copy(LogLine, Start + 1, Stop - Start - 1);
end;

function ExtractIndent1(LogLine: string): string;
var
  Start, Stop: Integer;
begin
  Start := Pos('<', LogLine);
  Stop := Pos('>', LogLine);
  Result := Copy(LogLine, Start + 1, Stop - Start - 1);
end;

function ExtractIndent2(LogLine: string): string;
var
  Start, Stop: Integer;
  Start2, Stop2: Integer;
begin
  Start := Pos('<', LogLine);
  Start2 := PosEx('<', LogLine, Start + 1); // +1, sonst findet er das erste Zeichen wieder
  Stop := Pos('>', LogLine);
  Stop2 := PosEx('>', LogLine, Stop + 1);
  Result := Copy(LogLine, Start2 + 1, Stop2 - Start2 -1);
end;

function ExtractLogMsg(LogLine: string): string;
var
  Start, Start2: Integer;
begin
  Start := Pos('>', LogLine);
  Start2 := PosEx('>', LogLine, Start + 1); // +1, sonst findet er das erste Zeichen wieder
  Result := Copy(LogLine, Start2 + 1, Length(LogLine) - Start2);
end;

procedure SplitLogLine(LogLine: string; out TimeStamp: string; out Indent1: string; out Indent2: string; out LogMsg: string);
begin
  TimeStamp := ExtractTimeStamp(LogLine);
  Indent1 := ExtractIndent1(LogLine);
  Indent2 := ExtractIndent2(LogLine);
  LogMsg := ExtractLogMsg(LogLine);
end;

var
  TimeStamp: string;
  Indent1: string;
  Indent2: string;
  LogMsg: string;

begin
  SplitLogLine(LINE, TimeStamp, Indent1, Indent2, LogMsg);
  Writeln(TimeStamp);
  Writeln(Indent1);
  Writeln(Indent2);
  Writeln(LogMsg);
  Readln;
end.
(Dauer 10 Minuten, inklusive starten der IDE und suchen nach einer PosEx Funktion hier im Forum.)

Die Fallunterscheidung überlasse ich dir.
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie (30. Nov 2011 um 14:53 Uhr)
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#25

AW: Zeichen aus einem String filtern/löschen

  Alt 30. Nov 2011, 14:53
Also nicht direkt einen Buffer... also naja nur eben dass ich das eben dann irgendwo speichere wenn ich die positionen zwischen den einzelnen zeichen ausgemach habe...

Der Code wäre nicht nötig gewesen aber ich danke danke danke dir^^
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Zeichen aus einem String filtern/löschen

  Alt 30. Nov 2011, 14:54
Du meinst das, was ich Start und Stop genannt habe?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#27

AW: Zeichen aus einem String filtern/löschen

  Alt 30. Nov 2011, 14:59
Ja genau...
Copy(LogLine, Start + 1, Stop - Start -1); Wieso nimmst du hier start + 1 und stop-start-1? das verstehe ich nicht ganz
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Zeichen aus einem String filtern/löschen

  Alt 30. Nov 2011, 15:00
Dann guck in der Hilfe nach, wie Copy funktioniert.
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
 
#29

AW: Zeichen aus einem String filtern/löschen

  Alt 30. Nov 2011, 16:15
Wieso denn jetzt dieser Aufruf procedure SplitLogLine(LogLine: string; out TimeStamp: string; out Indent1: string; out Indent2: string; out LogMsg: string); Eben hatten wir noch ein Array in den Parametern?
Und es war eine Funktion?
Und was ist mit den Sternchen?
Habe ich da was nicht mitbekommen?
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
Benutzerbild von Luckie
Luckie

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

AW: Zeichen aus einem String filtern/löschen

  Alt 30. Nov 2011, 16:17
Das wäre meine Lösung der Aufgabe ohne Rücksicht was der Lehrer vorgibt; das war mir etwas wirr. Und was ich nicht verstanden habe, habe ich einfach weggelassen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


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 15:57 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