Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi stringrid füllen mit suchergebnis (https://www.delphipraxis.net/10842-stringrid-fuellen-mit-suchergebnis.html)

horst 26. Okt 2003 13:54


stringrid füllen mit suchergebnis
 
ich habe ein problem mit dem füllen eines stringrid mit suchergebnissen.
ein memo kann ich so ganz prima füllen...
werwende dafür den tip:
http://joachim.mohr.rottenburg.bei.t...ml#durchsuchen
Code:
procedure ZuMemoFallsKiterienerfuellt(const pfad, BestimmteDatei,
                                      SuchTextInDerDatei: string);
begin
  if Str1IstInStr2(BestimmteDatei,pfad)
    and istInderDatei(SuchTextInDerDatei,pfad) then
      form1.memo1.lines.add('"'+pfad + '" enthält den Text "' +
                             SuchTextInDerDatei);
end;
ich muss aber die ersten beiden reihen eines stringrids füllen...
http://www.fusshoeller.com/screens/stringgrid.gif
habe es so versucht, klappt aber nicht...
Code:
procedure ZuMemoFallsKiterienerfuellt(const pfad, BestimmteDatei,SuchTextInDerDatei: string);
var
i:integer;
aStringList : TStringList;
begin
  aStringList := TStringList.Create;
  if Str1IstInStr2(BestimmteDatei,pfad)
    and istInderDatei(SuchTextInDerDatei,pfad) then
     // form1.memo1.lines.add('"'+pfad + '" enthält den Text "' + SuchTextInDerDatei);
     FOR i := 0 TO aStringList.Count - 1 DO
         BEGIN
       Form1.StringGrid1.Cells[0, i + 1] := ('"'+pfad + '" enthält den Text "' + SuchTextInDerDatei[i]);
end;
end;
1) im pfad sollte aber nur noch der ordner stehen ohne pfad (C:\xyz\
, das sollte alles in die erste spalte (da wo jetzt webbrowser steht)
2) das "enthält den Text " muss raus (ist das kleinste problem ;)
3) und in die zweite spalte sollte dann der name der datei. ( da wo jetzt tippname steht)

wer blickt hier durch und mag helfen?

grüße horst

Christian Seehase 26. Okt 2003 14:01

Re: stringrid füllen mit suchergebnis
 
Moin Horst,

irgendwie ist mir Dein Problem nicht klar.

Soweit ich das verstanden habe, solltest Du Dir mal ExtractFilePath, ExtractFileName, LastDelimiter und Copy anschauen.

horst 26. Okt 2003 14:09

Re: stringrid füllen mit suchergebnis
 
moin christian
das was mit
form1.memo1.lines.add('"'+pfad + SuchTextInDerDatei);
ins memo kommt, soll in ein stringrid. (s.screenshot oben)

Christian Seehase 26. Okt 2003 14:24

Re: stringrid füllen mit suchergebnis
 
Moin Horst,

schau Dir doch noch mal die Eigenschaft Cells genau an.
Hier werden doch als Parameter ja Spalte und Zeile angegeben.
Du brauchst also für jede Spalte eine Zuweisung, und kannst es nicht, wie beim Memo, mit einer erledigen.

horst 26. Okt 2003 14:29

Re: stringrid füllen mit suchergebnis
 
genau das ist ja mein problem, ich blick da nicht durch...

Christian Seehase 26. Okt 2003 14:34

Re: stringrid füllen mit suchergebnis
 
Moin Horst,

na ja, statt es in eine Zelle zu schreiben

Delphi-Quellcode:
Form1.StringGrid1.Cells[0, i + 1] := ('"'+pfad + '" enthält den Text "' + SuchTextInDerDatei[i]);
musst Du es in zwei Zellen schreiben

Delphi-Quellcode:
// erste Spalte
Form1.StringGrid1.Cells[0, i + 1] := pfad;
// zweite Spalte
Form1.StringGrid1.Cells[1, i + 1] :=SuchTextInDerDatei[i];

horst 26. Okt 2003 15:01

Re: stringrid füllen mit suchergebnis
 
das funktioniert so nicht, was mache ich falsch?

Delphi-Quellcode:
procedure ZuMemoFallsKiterienerfuellt(const pfad, BestimmteDatei,SuchTextInDerDatei: string);
var
i:integer;
aStringList : TStringList;
begin
 aStringList := TStringList.Create;
  if Str1IstInStr2(BestimmteDatei,pfad)
    and istInderDatei(SuchTextInDerDatei,pfad) then
   form1.memo1.lines.add('"'+pfad + '" enthält den Text "' + SuchTextInDerDatei);
   FOR i := 0 TO aStringList.Count - 1 DO
       BEGIN
// erste Spalte
Form1.StringGrid1.Cells[0, i + 1] := pfad;
// zweite Spalte
Form1.StringGrid1.Cells[1, i + 1] :=SuchTextInDerDatei[i];
end;
end;

Christian Seehase 26. Okt 2003 16:31

Re: stringrid füllen mit suchergebnis
 
Moin Horst,

Zitat:

Zitat von horst
das funktioniert so nicht

Ähhh... und was funktioniert nicht?

horst 26. Okt 2003 16:33

Re: stringrid füllen mit suchergebnis
 
das stringgrid wird nicht gefüllt...

hiermit geht es:
Delphi-Quellcode:
procedure ZuMemoFallsKiterienerfuellt(const pfad, BestimmteDatei,SuchTextInDerDatei: string);
var
i:integer;
aStringList : TStringList;
begin
//aStringList := TStringList.Create;
  if Str1IstInStr2(BestimmteDatei,pfad)
    and istInderDatei(SuchTextInDerDatei,pfad) then
   form1.memo1.lines.add('"'+pfad + '" enthält den Text "' + SuchTextInDerDatei);
   FOR i := 0 TO Form1.StringGrid1.ColCount - 1 DO
// erste Spalte
Form1.StringGrid1.Cells[0, i + 1] := pfad;
// zweite Spalte
Form1.StringGrid1.Cells[1, i + 1] :=BestimmteDatei;
end;
sieht aber komisch aus
http://www.fusshoeller.com/screens/s2.gif

Christian Seehase 26. Okt 2003 16:40

Re: stringrid füllen mit suchergebnis
 
Moin Horst,

wenn ich mir das mal genauer ansehe:
Kann auch nicht, denn es soll aus der StringListe gefüllt werden, die in dem Codeschnipsel nur erzeugt, aber nicht gefüllt wird, und somit einen Count von 0 hat, was dazu führt, dass die Schleife von 0 bis -1 geht, und somit übersprungen wird.

Sträflicher Weise wird die StringListe nicht einmal freigegeben ;-)

Irgendwie fehlt da wohl ein bisschen was Entscheidendes ;-)

horst 26. Okt 2003 16:44

Re: stringrid füllen mit suchergebnis
 
Zitat:

Irgendwie fehlt da wohl ein bisschen was Entscheidendes
ach nee...
das was fehlt weiss ich doch selber...nur wie ich das machen muss weiss ich nicht, deshalb poste ich doch hier. :-D
ich verstehe auch nicht, das stand doch auch schon alles in meinem ersten beitrag.

horst 26. Okt 2003 16:46

Re: stringrid füllen mit suchergebnis
 
wie soll ich in dem zusammenhang die stringliste füllen?

Christian Seehase 26. Okt 2003 17:03

Re: stringrid füllen mit suchergebnis
 
Moin Horst,

das kannst eigentlich nur Du wissen, zumal so wie Du es beschrieben hast, müsste es so genügen:

Delphi-Quellcode:
procedure ZuMemoFallsKiterienerfuellt(const pfad, BestimmteDatei,
                                      SuchTextInDerDatei: string);
begin
  if Str1IstInStr2(BestimmteDatei,pfad)
    and istInderDatei(SuchTextInDerDatei,pfad) then begin
    Form1.StringGrid1.Cells[0, Form1.StringGrid1.RowCount+1] := pfad;
    Form1.StringGrid1.Cells[1, Form1.StringGrid1.RowCount+1] := BestimmteDatei;
    Form1.StringGrid1.RowCount := Form1.StringGrid1.RowCount+1;
  end;
end;
Voraussetzung RowCount wird zu Beginn auf 1 gesetzt.

horst 26. Okt 2003 17:31

Re: stringrid füllen mit suchergebnis
 
:balloon: das ist es...
ich muss nur noch den pfad aus aus (Pfad) rauskriegen (so das nur noch der ordnername da steht)
und im zweiten stringgrid1.cells steht nur die dateiendung...
das ist alles, vielen dank für deine hilfe
ich will mir ein programm machen mit dem ich sourcecode-beispiele für verschiedene programmiersprachen/scripte abspeichern kann.

APP 26. Okt 2003 19:19

Re: stringrid füllen mit suchergebnis
 
Hallo Horst,

gestern hatte ich Dir eine Komplettlösung für fast das gleiche Problem geliefert, und
Zitat:

Zitat von horst
ich muss nur noch den pfad aus aus (Pfad) rauskriegen (so das nur noch der ordnername da steht)

das war eigentlich auch schon dabei. :warn:

horst 26. Okt 2003 19:35

Re: stringrid füllen mit suchergebnis
 
ich weiss das auch, nur für mich ist es nicht ganz so leicht die zusammenhänge herauszufinden
bzw. diese anzupassen.

du meinst das, gell?
Delphi-Quellcode:
IF FindFirst(Path + '*.TXT', faAnyFile, SearchR) = 0 THEN
         REPEAT
            IF (SearchR.Attr <> faDirectory) THEN
               BEGIN
                  // nach einem Wort im Dateinamen suchen
                  // pos ist CaseInsensitive! 
                  IF POS('x', SearchR.Name) <> 0 THEN
                        FileList.Add(ChangeFileExt(SearchR.Name, '')); // [EDIT] ohne Extension[/EDIT]
:oops:

Christian Seehase 26. Okt 2003 21:42

Re: stringrid füllen mit suchergebnis
 
Moin Horst,

zwei Dinge fallen mir an dem Codeschnipsel auf:

1.
pos ist case sensitiv
Inzwischen haben wir zu dem Thema schon einen ganzen Thread

2.
Delphi-Quellcode:
(SearchR.Attr <> faDirectory)
sollte besser so abgefragt werden:
Delphi-Quellcode:
(SearchR.Attr and faDirectory) = 0
da TSearchRec.Attr eine Bitmaske enthält. Sollte ausser faDirectory darin noch ein anderes Bit gesetzt sein, so wäre der Wert auch bei einem Directory ungleich faDirectory.

horst 26. Okt 2003 21:51

Re: stringrid füllen mit suchergebnis
 
hattee es auch schon geändert, vielen dank ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz