AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Stringgrid, in bestimmter Spalte nach String suchen...
Thema durchsuchen
Ansicht
Themen-Optionen

Stringgrid, in bestimmter Spalte nach String suchen...

Ein Thema von Budda · begonnen am 20. Jan 2005 · letzter Beitrag vom 27. Jan 2005
Antwort Antwort
Seite 2 von 2     12   
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#11

Re: Stringgrid, in bestimmter Spalte nach String suchen...

  Alt 24. Jan 2005, 10:01
Hallo,

danke, das funktioniert. Nur beim Speichern tu ich mich noch schwer.
Wenn ich das so wie du geschrieben hast mache macht er eine Endlosgroße txt datei bis der Rechner abschmiert

Schaut man nachträglich in die txt findet man folgendes vor:
Zitat:
0,0;1,0;2,0;3,0;4,0;5,0;6,0;7,0;8,0;9,0;10,0;11,0; 12,0;13,0;14,0;15,0;16,0;17,0
Das ist jetzt nur ein Auszug davon
Und das steht auf keinen Fall in der Tabelle ^^

Gruß
Budda
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#12

Re: Stringgrid, in bestimmter Spalte nach String suchen...

  Alt 24. Jan 2005, 11:18

Uuups!
Sorry!


Die Zeile
StringGrid1.Cells[c,r] := IntToStr(c)+','+IntToStr(r); muss raus. Hatte ich zu Testzwecken genommen, um irgendetwas in der Textdatei stehen zu haben...

Aber warum er bei dir ne endlosgroße Textdatei schreibt, versteh ich nicht.

Wieviele Spalten und Zeilen hast du denn? Erhöhst du die dynamisch zur Laufzeit?

Sollte aber eigentlich irrevlevant sein, denn deswegen lass ich ja extra bis RowCount-1 bzw. ColCount-1 laufen, damit man nicht für jede Änderung der Spalten-/Zeilenanzahl der Quelltext ändern muss.
  Mit Zitat antworten Zitat
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#13

Re: Stringgrid, in bestimmter Spalte nach String suchen...

  Alt 24. Jan 2005, 14:22
Hallo,

habe die Zeile rausgenommen und das Programm gekillt nachdem die textdatei bei 3 MB war

Ich fülle das Stringgrid mit einer Textdatei die 1,3MB gross ist.
Das Sind dann 8 Spalten und 6000 Zeilen.

Wenn ich das dann speicher ist der ganze Rechner lahm ohne ende und die Auslagerungsdatei wächst ^^
Wie gesagt bei na 3 MB grossen txt datei dann abgebrochen wobei sich diese auch nicht öffnen lässt, wieder Systemhänger.

Gruß
Budda
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#14

Re: Stringgrid, in bestimmter Spalte nach String suchen...

  Alt 24. Jan 2005, 15:29
Das ist aber wirklich seltsam. Wie füllst du das StringGrid denn? Manuell oder lässt du füllen?
Und wieviele Spalten und Zeilen werden dir zur Laufzeit im StringGrid angezeigt?

Falls du kein Problem damit hast, den Quelltext öffentlich zu machen, würde ich mir gerne mal das Formular und die unit ansehen, in der du das machst.
  Mit Zitat antworten Zitat
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#15

Re: Stringgrid, in bestimmter Spalte nach String suchen...

  Alt 24. Jan 2005, 15:53
Hallo,

das hier ist die Procedure zum einlesen:
Code:
procedure ReadTabFile(FN: TFileName; FieldSeparator: Char; SG: TStringGrid);
var
  i: Integer;
  S: string;
  T: string;
  Colonne, ligne: Integer;
  Les_Strings: TStringList;
  CountCols: Integer;
  CountLines: Integer;
  TabPos: Integer;
  StartPos: Integer;
  InitialCol: Integer;
begin
  Les_Strings := TStringList.Create;
  try
    Les_Strings.LoadFromFile(FN);

    CountLines := Les_Strings.Count + SG.FixedRows;

    T := Les_Strings[0];
    for i := 0 to Length(T) - 1 do Inc(CountCols, Ord(IsDelimiter(FieldSeparator, T, i)));
    Inc(CountCols, 1 + SG.FixedCols);

    if CountLines > SG.RowCount then SG.RowCount := CountLines;
    if CountCols > SG.ColCount then SG.ColCount := CountCols;

    InitialCol := SG.FixedCols - 1;
    Ligne := SG.FixedRows - 1;

    for i := 0 to Les_Strings.Count - 1 do
    begin
      Colonne := InitialCol;
      Inc(Ligne);
      StartPos := 1;
      S := Les_Strings[i];
      TabPos := Pos(FieldSeparator, S);
      repeat
        Inc(Colonne);
        SG.Cells[Colonne, Ligne] := Copy(S, StartPos, TabPos - 1);
        S := Copy(S, TabPos + 1, 999);
        TabPos := Pos(FieldSeparator, S);
      until TabPos = 0;
    end;
  finally
    Les_Strings.Free;
  end;
end;
Macht dann 8 Spalten und 6002 Zeilen

Gruß
Budda
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#16

Re: Stringgrid, in bestimmter Spalte nach String suchen...

  Alt 25. Jan 2005, 10:21
Hi!

Hab gestern noch zu tun gehabt, deswegen hab ich mich jetzt erst rangesetzt. Fehler hab ich auch schon gefunden. Bei dem Quelltext, den du zum Einlesen verwendest, wird ColCount am Anfang nicht auf 0 gesetzt.
Deswegen hast du nämlich eben nicht 8 Spalten sondern ??? Spalten, je nachdem was in der Speicherzelle vorher drin stand. Bei mir waren mehr als 44.000 . Wobei alles ab Spalte 9 leere Spalten waren...
Pack einfach
ColCount := 0; nach
Les_Strings.LoadFromFile(FN); .

Hab auch mal ein Beispielprojekt angefügt, kannste dir ja mal anschauen. Da hab ich die Speichern-Prozedur auch an deine Lesen-Prozedur angepasst.

MfG,
Thana

P.S.: Wo hast du den diesen englisch/französisch Mix her? Hab erst mal nen Schreck bekommen bei "Les_Strings". Irgendwie mag ich die Sprache nicht, liegt wohl an meiner Ex-Französisch-Lehrerin
Angehängte Dateien
Dateityp: zip stringgrid_499.zip (246,1 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#17

Re: Stringgrid, in bestimmter Spalte nach String suchen...

  Alt 25. Jan 2005, 10:53
Hab mir das ersetzen gerade noch mal angeschaut. Du könntest alternativ auch folgendes verwenden:
Delphi-Quellcode:
var
   spalte : TStrings;
begin
  spalte := StringGrid1.cols[2]; // die 3. Spalte
  StringReplace(spalte.Text,'grün','rot',[rfReplaceAll])
end;
Musst mal ausprobieren, was schneller ist. Bei obigem Code könntest du [rfReplaceAll] auch durch [rfReplaceAll,rfIgnoreCase] ersetzen, dann wäre Groß-/Kleinschreibung irrelevant. Er würde also nicht nur "grün" ersetzen, sondern auch "Grün", "gRün", "GRün", "grÜn" usw.

[edit1]
Allerdings würde bei dieser Variante auch ersetzt, wenn mehr in der Zelle steht. Also würde "Der Baum ist grün" zu "Der Baum ist rot".
[/edit1]
  Mit Zitat antworten Zitat
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#18

Re: Stringgrid, in bestimmter Spalte nach String suchen...

  Alt 25. Jan 2005, 14:16
Hallo,

werde das gleich mal testen, schonmal besten Dank

Wenn ich das:

Code:
var
   spalte : TStrings;
begin
  spalte := StringGrid1.cols[2]; // die 3. Spalte
  StringReplace(spalte.Text,'grün','rot',[rfReplaceAll])
end;
so abändere:
Code:
var
   spalte : TStrings;
begin
  spalte := StringGrid1.cols[2]; // die 3. Spalte
  StringReplace(spalte.Text,'grün','rot',[rfReplaceAll])
  StringReplace(spalte.Text,'blau','gelb',[rfReplaceAll])
end;
Ersetzt er dann auch noch andere Strings?
In der Spalte müssen nämliche verschieden Strings gesucht und ersetzt werden.

Gruß
Budda
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#19

Re: Stringgrid, in bestimmter Spalte nach String suchen...

  Alt 25. Jan 2005, 14:32
Jupp, macht er. Das benutzen wir bei der Ansteuerung eines Druckers über RS232-Schnittstelle, sollte eigentlich schön fix gehen
  Mit Zitat antworten Zitat
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#20

Re: Stringgrid, in bestimmter Spalte nach String suchen...

  Alt 27. Jan 2005, 09:37
Besten dank.
Jetzt speichert er und das auch schön schnell.
Allerdings hab ich das Problem das der Sauhund die letzte Spalte nicht ins StringGrid einliesst.
Ne Idee wo es da hakt? Vorgestern ging das noch ^^

Gruß
Budda
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:44 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