Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi StringGrid - soll keine leere Zeile schreiben (https://www.delphipraxis.net/57870-stringgrid-soll-keine-leere-zeile-schreiben.html)

Pump3r 28. Nov 2005 07:38


StringGrid - soll keine leere Zeile schreiben
 
Hi ich lese ein eine *.ini in ein stringgrid ein.
mein problem ist nur, er prüft alle topics in der ini,
er schreibt nur die wo ein bestimmter wert zutrifft.
das ist ja auch alles so gewollt, nur das einzigste problem ist,
er schreibt die wo nicht zutreffen, als eine leere zeile in dem stringrid.

kann ich das irgendwie unterbinden, oder verhindern?

Gruß Pump3r

ste_ett 28. Nov 2005 07:44

Re: StringGrid - soll keine leere Zeile schreiben
 
Schreib dir eine Funktion, die das Eintragen/Auslesen/etc. übernimmnt und bau da eine Prüfung ein.

marabu 28. Nov 2005 08:26

Re: StringGrid - soll keine leere Zeile schreiben
 
Hi Pump3r,

Zitat:

Zitat von Pump3r
nur das einzigste problem ist, er schreibt die wo nicht zutreffen, als eine leere zeile in dem stringrid.

wetten, dass nicht er, sondern du selbst die Leerzeilen in das StringGrid schreibst? Zeige doch mal den Code, mit dem du das StringGrid füllst.

Grüße vom marabu

Pump3r 28. Nov 2005 09:55

Re: StringGrid - soll keine leere Zeile schreiben
 
Hmm, ok schaus dir mal an:

Delphi-Quellcode:
procedure Tf_installation.BitBtn1Click(Sender: TObject);
 var
  ini        : TIniFile;
  sectionlist : tstringlist;
  i          : integer;
  x          : integer;
  wert       : string;
  _abteilung : string;
  begin
     try
     _abteilung := StringReplace(inidateiname,'.ini','',[rfReplaceAll, rfIgnoreCase]);
    rechnername_ermitteln;
    benutzername_ermitteln;

    ValueListEditor1.InsertRow('Rechnername',_rechnername,true);
    ValueListEditor1.InsertRow('Benutzername',_benutzername,true);
    ValueListEditor1.InsertRow('Abteilung',_abteilung,true);

    x              := -1;
    sectionlist    := TStringList.Create;
    BitBtn3.Enabled := true;
    BitBtn6.Enabled := true;

    if not FileExists(ExtractFilePath(application.ExeName)+'INIs\data.ini') then
     begin
     showmessage('Quelldatei existiert nicht! [data.ini] ');
     end;

   ini := tinifile.Create(ExtractFilePath(application.ExeName)+'INIs\data.ini');
   ini.ReadSections(sectionlist);
   StringGrid1.RowCount := sectionlist.Count+1;

   for i:=0 to sectionlist.Count-1 do
     begin
     inc(x);
     wert := ini.ReadString(sectionlist.Strings[i],'abteilung','');
     if pos(_abteilung,wert) > 0 then
      //showmessage(sectionlist.Strings[i]+' -- '+wert);
      begin
       stringgrid1.Cells[0,x+1] := ini.ReadString(sectionlist.Strings[i],'NAME','<nicht gefunden>');
       stringgrid1.Cells[1,x+1] := ini.ReadString(sectionlist.Strings[i],'PFAD','<nicht gefunden>');
       stringgrid1.Cells[2,x+1] := ini.ReadString(sectionlist.Strings[i],'INFO','<nicht gefunden>');
       stringgrid1.Cells[3,x+1] := ini.ReadString(sectionlist.strings[i],'DOKUMENTATION','<nicht gefunden>');
       end;
     end;
    finally
      ini.Free;
      sectionlist.Clear;
      sectionlist.Free;
   end;
end;
Gruß Pump3r

mumu 28. Nov 2005 10:07

Re: StringGrid - soll keine leere Zeile schreiben
 
mach mal folgendes:

Delphi-Quellcode:
for i:=0 to sectionlist.Count-1 do
     begin
     wert := ini.ReadString(sectionlist.Strings[i],'abteilung','');
     if pos(_abteilung,wert) > 0 then
      //showmessage(sectionlist.Strings[i]+' -- '+wert);
      begin
       inc(x);
       stringgrid1.Cells[0,x+1] := ini.ReadString(sectionlist.Strings[i],'NAME','<nicht gefunden>');
       stringgrid1.Cells[1,x+1] := ini.ReadString(sectionlist.Strings[i],'PFAD','<nicht gefunden>');
       stringgrid1.Cells[2,x+1] := ini.ReadString(sectionlist.Strings[i],'INFO','<nicht gefunden>');
       stringgrid1.Cells[3,x+1] := ini.ReadString(sectionlist.strings[i],'DOKUMENTATION','<nicht gefunden>');
       end;
     end;
    finally
      ini.Free;
      sectionlist.Clear;
      sectionlist.Free;
   end;

Angel4585 28. Nov 2005 10:08

Re: StringGrid - soll keine leere Zeile schreiben
 
Ich würde das obere Rowcount:= count raus machen und hier:

Delphi-Quellcode:
if pos(_abteilung,wert) > 0 then
      //showmessage(sectionlist.Strings[i]+' -- '+wert);
      begin
      [b]if StringGrid1.Cells[0,Pred(StringGrid1.rowcount)]='' then
       StringGrid1.rowcount:=StringGrid1.rowcount+1;[/b]
       stringgrid1.Cells[0,x+1] := ini.ReadString(sectionlist.Strings[i],'NAME','<nicht gefunden>');
       stringgrid1.Cells[1,x+1] := ini.ReadString(sectionlist.Strings[i],'PFAD','<nicht gefunden>');
       stringgrid1.Cells[2,x+1] := ini.ReadString(sectionlist.Strings[i],'INFO','<nicht gefunden>');
       stringgrid1.Cells[3,x+1] := ini.ReadString(sectionlist.strings[i],'DOKUMENTATION','<nicht gefunden>');
       end;
einbauen.(Weis nich ob das bei dir funzt, aber probier das mal)

EDIT: kombiniere die Lösungen von mumu und mir und du hast es :mrgreen:

Pump3r 28. Nov 2005 10:42

Re: StringGrid - soll keine leere Zeile schreiben
 
Danke Jungs!!!

Geht 1a.

Aber mumu, eine Frage, du hasst nur das inc versetz?

Gruß Pump3r

mumu 28. Nov 2005 10:47

Re: StringGrid - soll keine leere Zeile schreiben
 
ja hab nur das inc versetzt.


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