Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 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;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat