Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Text in Stringgrid sortieren (https://www.delphipraxis.net/22834-text-stringgrid-sortieren.html)

Spike2k3 24. Mai 2004 19:18


Text in Stringgrid sortieren
 
hi,
ich möchte aus einem Memo oder textdatei (was einfacher is) ein paar sachen auslesen, hab aber leider nich wirklich ahnung wie
ich das machen kann. Also:

Der Text:
NEMO
Hidiho
GLUBSCHI
hi digga
wie gehts?
/////////

So, nun möchte ich das gern in ein Stringgrid packen, die Grossbeschriebenen Namen in Spalte 1, die kleinen in Spalte 2
und ausm ///// eine rote Spalte...ich weiss, is nich einfach :(
also ersma muss vorallem das mit den Namen klappen...
HAbt ihr ne Idee wie ich die so einlesen kann, dass sie immer auf die richtige Seite fallen?

*help* *schnief*

Pr0g 24. Mai 2004 19:56

Re: Text in Stringgrid sortieren
 
Hier ist mal ein Beispiel. Du brauchst ein TMemo, TButton und ein TStringGrid. Dann fügst du folgende Prozedur in dein Projekt ein:

Delphi-Quellcode:
procedure WriteToStringGrid(Lines: TStrings; SG: TStringGrid);
var
  i, c: Integer;
  s: String;
begin
  c := 0;
  for i := 0 to Lines.Count-1 do
  begin
    SG.RowCount := SG.RowCount+1;
    s := Lines[i];
    if s[1] = '/' then
    begin
      //rote Spalte
    end else begin
      if s[1] = AnsiUpperCase(s[1]) then //großgeschrieben
      begin
        SG.Cells[0, c] := s;
        Inc(c);
      end else                          //kleingeschrieben
        SG.Cells[1, i-c] := s;
     end;
  end;
end;
Und im OnClick-Ereignis des Buttons führst du folgenden Code aus:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with StringGrid1 do
  begin
    ColCount := 2; //zwei Spalten
    RowCount := 0; //null Zeilen
  end;
  WriteToStringGrid(Memo1.Lines, StringGrid1);
end;
Nur das mit der roten Spalte habe ich nicht verstanden. Wo soll die denn hin?

MfG Pr0g

Spike2k3 24. Mai 2004 21:07

Re: Text in Stringgrid sortieren
 
funzt leider nich wirklich :(
Nemo sagt immer Hi digga...
die zweite zeile is leer und in der dritten steht nur Glubschi
in der vierten Zeile wieder nix und in der fünften
links hidiho und rechts wie gehts...
irgendwas scheint da nich zu klappen :(
achja, die rote zeile ist überflüssig, wie mir gerade aufgefallen ist...
Viel besser wäre es wenn einfach links das //// stehen bleibt...

Pr0g 24. Mai 2004 21:23

Re: Text in Stringgrid sortieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hm, dass es nicht geht wundert micht. Wenn ich genau die Codes aus meinem ersten und den Text aus deinem ersten Post nehme, dann klappt es bei mir (siehe angehängtem Screenshot). Ich habe die Prozedur ein bisschen verändert, damit auch die "//////" eingetragen werden:

Delphi-Quellcode:
procedure WriteToStringGrid(Lines: TStrings; SG: TStringGrid);
var
  i, c: Integer;
  s: String;
begin
  c := 0;
  for i := 0 to Lines.Count-1 do
  begin
    SG.RowCount := SG.RowCount+1;
    s := Lines[i];
    if (s[1] = AnsiUpperCase(s[1])) or (s[1] = '/') then //großgeschrieben
    begin
      SG.Cells[0, c] := s;
      Inc(c);
    end else                                            //kleingeschrieben
      SG.Cells[1, i-c] := s;
  end;
end;

Spike2k3 24. Mai 2004 21:30

Re: Text in Stringgrid sortieren
 
hm...komisch..achja, Hidiho is auch ein Ausspruch
und kein NAme ;)

Pr0g 25. Mai 2004 12:36

Re: Text in Stringgrid sortieren
 
Achso, ich dachte dass jedes Wort, welches mit einem Großbuchstaben beginnt, ein Name ist, also in die erste Spalte soll. Um alle Wörter, die komplett großgeschrieben sind in die erste Spalte zu packen muss du nur die folgende Zeile:

Delphi-Quellcode:
    if (s[1] = AnsiUpperCase(s[1])) or (s[1] = '/') then //großgeschrieben
durch diese ersetzen:

Delphi-Quellcode:
    if (s = AnsiUpperCase(s)) or (s[1] = '/') then //großgeschrieben

eroe 25. Mai 2004 13:23

Re: Text in Stringgrid sortieren
 
Delphi-Quellcode:

(s[1] = '/')
Behandelt diese Zeile nur den letzten Eintrag ('//////') oder ist der noch für was anderes gut ?

Pr0g 25. Mai 2004 13:52

Re: Text in Stringgrid sortieren
 
Ja, wenn der Text mit "/" beginnt, dann wird er in die erste Spalte geschrieben, genauso wie gorßgeschriebene Wörter (vorherige Bedingung in der gleichen If Abfrage).

Spike2k3 4. Jun 2004 15:06

Re: Text in Stringgrid sortieren
 
Danke, nu funzt das mit dem Einordnen :)
Mein einziges PRoblem ist noch das:
Zitat:

MARLIN
Huh?
Was?
Ok...
Gibt es nen weg die drei ausagen in ein Feld zu packen???

Also
links: MARLIN (klappt ja schon *G)*
rechts: Huh? Was? Ok...

*Hoff, dass das geht*

Pr0g 4. Jun 2004 23:36

Re: Text in Stringgrid sortieren
 
Das würde gehen, jedoch müsste man dazu ein Schema kennen. Gehört der Text hinter einen Namen, bis zum nächsten Namen immer zu dem "Startnamen"? Beispiel:

Code:
NAME 1
text von 1
...
NAME 2
text von 2
...
Wo soll der Text hin? Einfach hintereinander in die rechte Spalte?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 Uhr.
Seite 1 von 2  1 2      

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