AGB  ·  Datenschutz  ·  Impressum  







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

"doppelten code" vermeiden?

Ein Thema von Pseudemys Nelsoni · begonnen am 17. Jan 2004 · letzter Beitrag vom 24. Jan 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

"doppelten code" vermeiden?

  Alt 17. Jan 2004, 10:27
hoi, in einem anderem thread hab ich diesen code gepostet gehabt:

Delphi-Quellcode:
      begin
        Delete(params, 1, Pos(':', params)+1);
        Trim(params);
        while params <> 'do
        begin
          if Pos(' ', params) > 0 then
          begin
            SetLength(NickInfo, high(NickInfo)+1);
            NickInfo[high(NickInfo)].Nick := Copy(params, 1, Pos(',', params)-1);
            Delete(params, 1, Pos(',', params));
            NickInfo[high(NickInfo)].ClanID := Copy(params, 1, Pos(',', params)-1);
            Delete(params, 1, Pos(',', params));
            NickInfo[high(NickInfo)].LongIP := Copy(params, 1, Pos(' ', params)-1);
            Delete(params, 1, Pos(' ', params));
          end
          else
          begin
            SetLength(NickInfo, high(NickInfo)+1);
            NickInfo[high(NickInfo)].Nick := Copy(params, 1, Pos(',', params)-1);
            Delete(params, 1, Pos(',', params));
            NickInfo[high(NickInfo)].ClanID := Copy(params, 1, Pos(',', params)-1);
            Delete(params, 1, Pos(',', params));
            NickInfo[high(NickInfo)].LongIP := Copy(params, 1, Pos('', params)-1);
            Delete(params, 1, Pos('', params));
          end;
        end;
      end;
wie man sieht sind der block oben und unten fast gleich, bis auf ' ' und '' (letzte beiden zeilen)

es geht darum das ich z.b die wörter aus einem string holen möchte, sagen wir mal der string sieht z.b so aus:

Zitat:
bla1 bla2 bla3 bla4 bla5
um alle wörter dort rauszubekommen müsste ich ja bis pos ' ' -1 kopieren.
beim letzten wort gibt es aber kein whitespace mehr, sondern das ende ''... nur dafür hab ich den ganzen code nochmal schreiben müssen? (siehe 2ten block)

es muss doch auch anders gehen oder?

mfg
Mario
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: "doppelten code" vermeiden?

  Alt 17. Jan 2004, 10:32
So sollte es gehen
Delphi-Quellcode:
var helpstring: String;
begin
[...]
if Pos(' ', params) > 0 then helpstring := ' else helpstring := '';
[...]
NickInfo[high(NickInfo)].LongIP := Copy(params, 1, Pos(helpstring, params)-1);
Delete(params, 1, Pos(helpstring, params));
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: "doppelten code" vermeiden?

  Alt 17. Jan 2004, 11:31
da hätt ich idiot auch drauf kommen können, danke sirthornberry
Mario
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.031 Beiträge
 
Delphi 12 Athens
 
#4

Re: "doppelten code" vermeiden?

  Alt 17. Jan 2004, 13:13
Noch ein paar kleine Fragen zu deinem Code:

Trim(params); Bist du sicher, das hier auch das gemacht wird, was du willst?

Ich denke mir mal, es sollt wohl eher so aussehn:
params := Trim(params);

und dieser Teil dürft wohl auch nicht die gewünschten Resultate bringen:
Pos('', params) Bei mir ist das Ergebnis immer 0:
Pos('', params) = 0 Du könntest ja an params einfach ein ' ' anhängen, dann hat sich dein Problem gelöst:
Delphi-Quellcode:
      begin
        Delete(params, 1, Pos(':', params)+1);
        params := Trim(params) + ' ';
        while params <> 'do
        begin
          SetLength(NickInfo, high(NickInfo)+1);
          NickInfo[high(NickInfo)].Nick := Copy(params, 1, Pos(',', params)-1);
          Delete(params, 1, Pos(',', params));
          NickInfo[high(NickInfo)].ClanID := Copy(params, 1, Pos(',', params)-1);
          Delete(params, 1, Pos(',', params));
          NickInfo[high(NickInfo)].LongIP := Copy(params, 1, Pos(' ', params)-1);
          Delete(params, 1, Pos(' ', params));
        end;
      end;
oder du arbeitest sauber (ohne vorher ein Pseudoleerzeichen anzuhängen) und machst das mit Length(params), was dann zum wegfallen von Copy und Delete führt:
Delphi-Quellcode:
      begin
        Delete(params, 1, Pos(':', params)+1);
        Trim(params);
        while params <> 'do
        begin
          if Pos(' ', params) > 0 then
          begin
            SetLength(NickInfo, high(NickInfo)+1);
            NickInfo[high(NickInfo)].Nick := Copy(params, 1, Pos(',', params)-1);
            Delete(params, 1, Pos(',', params));
            NickInfo[high(NickInfo)].ClanID := Copy(params, 1, Pos(',', params)-1);
            Delete(params, 1, Pos(',', params));
            NickInfo[high(NickInfo)].LongIP := Copy(params, 1, Pos(' ', params)-1);
            Delete(params, 1, Pos(' ', params));
          end
          else
          begin
            SetLength(NickInfo, high(NickInfo)+1);
            NickInfo[high(NickInfo)].Nick := Copy(params, 1, Pos(',', params)-1);
            Delete(params, 1, Pos(',', params));
            NickInfo[high(NickInfo)].ClanID := Copy(params, 1, Pos(',', params)-1);
            Delete(params, 1, Pos(',', params));
            {NickInfo[high(NickInfo)].LongIP := Copy(params, 1, Length(params));}
            NickInfo[high(NickInfo)].LongIP := params;
            {Delete(params, 1, Length(params));}
            params := '';
          end;
        end;
      end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: "doppelten code" vermeiden?

  Alt 17. Jan 2004, 14:11
mit dem trim hast du recht *g*

Zitat:
und dieser Teil dürft wohl auch nicht die gewünschten Resultate bringen:
Source:
Pos('', params)
wo hab ich denn "Pos('', params)" stehen?


Zitat:
Du könntest ja an params einfach ein ' ' anhängen, dann hat sich dein Problem gelöst:
das is auch ne gute idee, danke ;D

bei deinem letzten tip hab ich dann aber doch wieder 2 blöcke, also das mit dem "unsauberem" war mir doch lieber,

also thx :]
Mario
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.031 Beiträge
 
Delphi 12 Athens
 
#6

Re: "doppelten code" vermeiden?

  Alt 24. Jan 2004, 21:46
Mir währe die 1. Variante auch lieber

Zitat:
wo hab ich denn "Pos('', params)" stehen?
Code:
      begin
        Delete(params, 1, Pos(':', params)+1);
        Trim(params);
        while params <> '' do
        begin
          if Pos(' ', params) > 0 then
          begin
            ...
          end
          else
          begin
            ...
            NickInfo[high(NickInfo)].LongIP := Copy(params, 1, [color=red]Pos('', params)[/color]-1);
            Delete(params, 1, [color=red]Pos('', params)[/color]);
          end;
        end;
      end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


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:34 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