AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Welches Zeichen Könnte eine neue Zeile sein?
Thema durchsuchen
Ansicht
Themen-Optionen

Welches Zeichen Könnte eine neue Zeile sein?

Ein Thema von Pseudemys Nelsoni · begonnen am 20. Sep 2004 · letzter Beitrag vom 21. Sep 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Welches Zeichen Könnte eine neue Zeile sein?

  Alt 20. Sep 2004, 00:36
hi,

ich kriege von dem server mit dem ich verbunden bin einige zeilen text gesendet, ich parse das ganze so:

Delphi-Quellcode:
Queue := Queue + ReceiveText;
    while pos(#10, Queue) <> 0 do
      Queue[pos(#10, Queue)] := #13;
    while pos(#13#13, Queue) <> 0 do
      delete(Queue, pos(#13#13, Queue), 1);
    // ab jetzt sollten höchstens noch #13 zeichen drin sein (die ich später als seperator nehme)
    while pos(#13, Queue) <> 0 do
    begin
      line := copy(Queue, 1, pos(#13, Queue)-1);
      delete(Queue, 1, pos(#13, Queue));
      MEMO1.LINES.ADD(line);
    end;

so, wenn ich mein programm nun starte und der server mir sein zeug sendet bekomme ich folgendes in mein memo:

Zitat:
Email=dfhdrhd@fhf.de

nick=walkman

age=20

PID=30

Woher kommen die leeren zeilen? und vorallem, wie bekomme ich sie weg?

wenn ich vorher mit:

if line <> '' prüfe und nur dann was ins memo einfüge geht es einwandfrei.... aber ich möchte garnicht erst das ich da ne komplett leere line habe. woher kommt die? vom server kommt nichts leeres das weiss ich (mit ethereal geloggt)...

btw: Queue ist ein privates feld der klasse
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#2

Re: Welches Zeichen Könnte eine neue Zeile sein?

  Alt 20. Sep 2004, 00:46
Warum benutzt du nicht die Funktion AdjustLineBreaks?
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: Welches Zeichen Könnte eine neue Zeile sein?

  Alt 20. Sep 2004, 00:57
was bringt mir die funktion? (ka) delphi hilfe hilft mir da nicht gerade...
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#4

Re: Welches Zeichen Könnte eine neue Zeile sein?

  Alt 20. Sep 2004, 01:12
Zitat von Pseudemys Nelsoni:
delphi hilfe hilft mir da nicht gerade...
Warum nicht?
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5

Re: Welches Zeichen Könnte eine neue Zeile sein?

  Alt 20. Sep 2004, 01:30
weil die funktion ja auch nur irgendwas mit den beiden #13 und #10 macht...

Die 10er ersetzt ich durch 13er, die doppelten 13er lösch ich, dann tu ich jede zeile bis zu einer 13 in mein memo, dann lösche ich die queue bis NACH der 13.... ich weiss nich woher meine leeren zeilen kommen, da sind weder 13er noch 10er nachher drin...
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Welches Zeichen Könnte eine neue Zeile sein?

  Alt 20. Sep 2004, 01:37
Moin!

Was ist, wenn der Server nach Unix Art kein #10#13 sendet sondern nur ein #13 ? Dann greift kein einziger deiner Codes und durch das Add kommt ein 2. Zeilenvorschub hinzu...

Daher: Lösche alle #10 und alle #13 direkt und sofort. Einen neuen LineBreak bekommst du durch das Add()

MfG
Muetze1
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Welches Zeichen Könnte eine neue Zeile sein?

  Alt 20. Sep 2004, 01:38
machs doch mit ansireplacestr und tu die #13ner raus machen.. bin sicher du hast da n denkfehler wodurch du trotzdem noch #13 drin hast ( ich peil deinen code gerade net so ganz.. is schon spät )
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Welches Zeichen Könnte eine neue Zeile sein?

  Alt 20. Sep 2004, 01:39
genau mütze
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#9

Re: Welches Zeichen Könnte eine neue Zeile sein?

  Alt 20. Sep 2004, 01:45
@Muetze

wenn ich die #13er lösche hab ich nichtsmehr das den text trennt, der server sendet ja nicht nur eine line, sondern manchmal auch mehrere zusammen, die kann ich ja nur an dem #13 auseinanderhalten, wenn die weg sind ist das gar nichtmehr möglich :\

Zitat:
Was ist, wenn der Server nach Unix Art kein #10#13 sendet sondern nur ein #13 ? Dann greift kein einziger deiner Codes und durch das Add kommt ein 2. Zeilenvorschub hinzu...
Richtig. Die schleifen kommen dann nie zum einsatz, die hab ich aber vorsichthalber drinnen falls es doch #10#13 ist.

Aber egal ob es #10#13 oder nur #13 ist, dass hier:

Delphi-Quellcode:
...
    while pos(#13, Queue) <> 0 do
    begin
      line := copy(Queue, 1, pos(#13, Queue)-1);
      delete(Queue, 1, pos(#13, Queue));
      MEMO1.LINES.ADD(line);
    end;
funktionier in jedem fall.

Wie gesagt ich kriege leere lines hinzugefügt...ka warum.

@Supermuckl: wie gesagt die #13er brauch ich
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Welches Zeichen Könnte eine neue Zeile sein?

  Alt 20. Sep 2004, 01:48
kennste diese vbsplit procedure ?
*such*

Delphi-Quellcode:
function Tform1.splitOutIndex(Source: String; Delimiter: String; Index: Integer): String;
var count, number: Integer;
    giveback: String;
begin
count := 1;
number := 0;
giveback := '';
while (count <= length(Source)) and (number <= index) do
begin
  if copy(Source, count, length(Delimiter)) = Delimiter then
  begin
   number := number + 1;
   count := count + length(Delimiter);
  end else begin
   if number = Index then giveback := giveback + Source[count];
   count := count + 1;
  end;
end;
result := giveback;
end;
//--------------------------------------------------------

function Tform1.VBSplit(Liste: TStringList; Text2Split, SeperatorStr: String): Boolean;
Var Posi     : Longint;
      strTemp : String;
      strPart : String;
      bInLoop : Boolean;
      sepLen : Longint;
begin
   result := true;
   bInLoop := false;
   try
      //Liste leeren
      Liste.clear;
      strTemp := Text2Split;
      sepLen := Length(SeperatorStr);
      Posi := Pos(SeperatorStr,strTemp);
      While Posi > 0 do begin
         bInLoop := true;
         strPart := Copy(strTemp,1,Posi-1);
         Liste.Add(strPart);
         strTemp := copy(strTemp,Posi+sepLen,Length(strTemp)-(Posi+sepLen-1));
         Posi := Pos(SeperatorStr,strTemp);
      end;
      if (bInLoop) or (Length(strTemp)>0) then
         Liste.add(strTemp);
   except
      Result := false;
   end;
end;

//--------------------------------------------------------
diese könntest du ja benutzen (eine davon)
und den text trennen und die lines adden ( und vor dem adden ALLE #10 und #13 mit ansistrreplace raus filtern
und auch '' strings rausfiltern falls sie hintereinander kommen und die splitfunktionen einen leeren string zurück geben als item
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:28 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