Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Stringgrid mit gleichen Daten befüllen, aber unterschiedliche Ergbnisse (https://www.delphipraxis.net/212305-stringgrid-mit-gleichen-daten-befuellen-aber-unterschiedliche-ergbnisse.html)

CGEu 23. Jan 2023 14:04

Stringgrid mit gleichen Daten befüllen, aber unterschiedliche Ergbnisse
 
Hallo
vielleicht könnt ihr mir da bei dieser Verständnisfrage weiterhelfen.

Gegeben ist ein Stringgrid mit 5 Spalten und 2 Row´s (+ Headerrow). Beide Row´s werden (eigentlich mit den gleichen Daten befüllt. Das Problem sind leere Zellen, also ohne Text (hier im Beispiel die 2. Spalte). Wenn die Werte mit CommaText oder DelimitedText gefüllt werden, bekomme ich beim Auslesen ein Leerzeichen. Warum ist das so und wie kann ich das verhindern?

Delphi-Quellcode:
// ROW 1
StringGrid1.RowCount := 3;
StringGrid1.Cells[0, 1] := 'a';
StringGrid1.Cells[1, 1] := '';
StringGrid1.Cells[2, 1] := 'b';
StringGrid1.Cells[3, 1] := 'c';
StringGrid1.Cells[4, 1] := 'd';
StringGrid1.Cells[5, 1] := 'e';

// ROW 2
StringGrid1.Rows[2].CommaText := 'a,,b,c,d,e';

Memo1.Lines.Clear;
Memo1.Lines.Add('Cell 1.1: "'+StringGrid1.Cells[1, 1]+'"');
Memo1.Lines.Add('Cell 1.2: "'+StringGrid1.Cells[1, 2]+'"');
Ergebniss:
Cell 1.1: ""
Cell 1.2: " " <<< Warum ist hier ein Leerzeichen !!!

PaPaNi 23. Jan 2023 14:42

AW: Stringgrid mit gleichen Daten befüllen, aber unterschiedliche Ergbnisse
 
Schauen Sie bitte an, wie ein Zeichen hinzugefügt wird, wenn man eine Commatext-Funktion verwendet (es wird in diesem Fall ein Leerzeichen extra addiert).

Code:
function TStringGridStrings.Add(const S: string): Integer;
var
  I: Integer;
begin
  for I := 0 to Count - 1 do
    if Strings[I] = '' then
    begin
      if S = '' then
        Strings[I] := ' '
      else
        Strings[I] := S;
      Result := I;
      Exit;
    end;
  Result := -1;
end;

CGEu 23. Jan 2023 15:48

AW: Stringgrid mit gleichen Daten befüllen, aber unterschiedliche Ergbnisse
 
Erstmal vielen Dank für diesen Hinweis. :)

Und dann hat sich auch die Frage geklärt, warum es eine schlechte Idee war, ein StringGrid mit "Commatext" oder "DelimitedText" zu befüllen. Das hatte ich so auch noch nie gesehen. Ich sehe auch keine Möglichkeit, dieses Leerzeichen mit diesen Befüll-Methoden zu verhindern. Dann werde ich wohl das befüllen auf Cells[aCol, aRow] := ... anpassen.

Thx


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