Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Erstes bestimmtes Zeichen abschneiden (https://www.delphipraxis.net/120542-erstes-bestimmtes-zeichen-abschneiden.html)

SaFu 12. Sep 2008 10:47


Erstes bestimmtes Zeichen abschneiden
 
Tach

Hab da mal folgendes Problem.

Ich übergebe ein String an ein Label, der String ist öfter durch ein Komma getrennt.
Jetzt habe das Proble das ich immer an erster Stelle ein Komma habe das wurde ich gerne weg haben.

Hab es Schon mit Pos() / Copy() versucht da wird ja nur Kopiert ist nicht das richtige.

Auch mit Delete ist auch nicht das richtige weil ich das im onChange ereignis habe und wenn ich das öfter aufrufe ist irgendwann der ganze String weg.

Ich brüchte ne Lösung wo geprüft wird ob das erste Zeiche ein "," ist und das gelöscht wird.

Gruß Sascha

DeddyH 12. Sep 2008 10:51

Re: Estes bestimmtes Zeichen abschneiden
 
Delphi-Quellcode:
if (Length(s) > 0) and (s[1] = ',') then Delete(s,1,1);

divBy0 12. Sep 2008 10:53

Re: Estes bestimmtes Zeichen abschneiden
 
Hi!

Wieso geht das nicht mit Pos()?

Du könntest aber auch das erste Zeichen mit DeinString[1] prüfen, wenn es ein Komma ist, dann lösche das Zeichen oder kopiere den Rest in einen anderen String und übergebe ihn an das Label, wenn es kein Komma ist übergibts du den String direkt ans Label.

Edit: Zu langsam... :-D

Reinhardtinho 12. Sep 2008 10:53

Re: Estes bestimmtes Zeichen abschneiden
 
Oder mit Delphi-Referenz durchsuchenStringReplace.

SaFu 12. Sep 2008 11:02

Re: Estes bestimmtes Zeichen abschneiden
 
Das geht auch nicht so ganz vielleicht wäre einer von euch mal sonet und würde da drüber schauen ich find den Fehler nicht.

Da hängt ja noch einiges mehr dran.

Delphi-Quellcode:
procedure TForm7.Edit1Change(Sender: TObject);
var sAnKollegeEdit,sAnKollegeEditFertig : String;
    iEditposition :Integer;
begin
  sAnKollegeEdit:= Edit1.Text;

  if (Length(sAnKollegeEdit) > 0) and (sAnKollegeEdit[1] = ',') then
  Delete(sAnKollegeEdit,1,1);

  Label1.Caption:= sAnKollegeEdit;
end;

function ColsToStr(sg: TStringGrid; colNums: array of Integer): string;
var iCol, iRow: Integer;
    s: string;
begin
  with TStringList.Create do
  try
    Sorted := True;
    for iCol := Low(colNums) to High(colNums) do
     for iRow := sg.FixedRows to Pred(sg.RowCount) do
      begin
        s:= Trim(sg.Cols[colNums[iCol]][iRow]);
        if (s <> '') and (IndexOf(s) < 0) then
          Add(s);
      end;
    Result := CommaText;
  finally
    Free;
  end;
end;

procedure TForm7.StringGrid1EditorLeave(Sender: TObject; ACol, ARow: Integer);
Var sTemp: String;
    slTemp: TStringlist;
Begin
   //Wenn eine der beiden Spalten verlassen wird, dann holen wir und erstmal die kommaseparierten Values dieser beiden Spalten
   If (ACol = 11) Or (ACol = 12) Then Begin
      sTemp := ColsToStr(StringGrid1, [11, 12]);

      //Anführungsstriche entfernen
      sTemp := StringReplace(sTemp, #34, '', [rfReplaceAll]);

      sTemp:= sTemp + ',' + Edit1.Text;

      //daraus müssen nun noch doppelte Einträge entfernt werden
      slTemp := TStringList.Create;
      Try
         slTemp.Sorted := True;
         slTemp.Duplicates := dupIgnore;
         slTemp.CommaText := sTemp;

         //Dem Edit den Kommatext zuweisen
         Edit1.Text := slTemp.CommaText;
      Finally
         slTemp.Free;
      End;
   End;
End;

thkerkmann 12. Sep 2008 11:30

Re: Estes bestimmtes Zeichen abschneiden
 
Hi,

kann es sein, dass das mit dem Komma nur passiert, wenn in den Spalten 11 und 12 nix drin ist ?

ich würde die Zeile
Delphi-Quellcode:
  sTemp := sTemp + ',' + Edit1.Text;
ändern auf
Delphi-Quellcode:
if sTemp = '' then
   sTemp := Edit1.Text
else
  sTemp := sTemp + ',' + Edit1.Text;
Gruss

Reinhardtinho 12. Sep 2008 11:31

Re: Estes bestimmtes Zeichen abschneiden
 
was wird denn angezeigt?

SaFu 12. Sep 2008 11:37

Re: Estes bestimmtes Zeichen abschneiden
 
Zitat:

Zitat von thkerkmann
Hi,

kann es sein, dass das mit dem Komma nur passiert, wenn in den Spalten 11 und 12 nix drin ist ?

ich würde die Zeile
Delphi-Quellcode:
  sTemp := sTemp + ',' + Edit1.Text;
ändern auf
Delphi-Quellcode:
if sTemp = '' then
   sTemp := Edit1.Text
else
  sTemp := sTemp + ',' + Edit1.Text;
Gruss

Damit scheints ja richtig zu gehen jetzt wird auch nicht mehr das 1 Komma ins Edit übergeben und ich muss es nicht weg schneiden danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 18: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