AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Verschiedene Zeilen im Grid auslesen und wiedergeben
Thema durchsuchen
Ansicht
Themen-Optionen

Verschiedene Zeilen im Grid auslesen und wiedergeben

Ein Thema von rhodan · begonnen am 12. Okt 2005 · letzter Beitrag vom 15. Okt 2005
Antwort Antwort
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#1

Verschiedene Zeilen im Grid auslesen und wiedergeben

  Alt 12. Okt 2005, 22:29
Moin Moin und grüße aus Hamburg,

hoffe der Titel dieses Topics hat mein Problem ein wenig wiedergegeben.
erstmal wollte ich mich bedanken bei allen die mir bis jetzt geholfen haben, es ist unglaublich wieviel man hier lernen kann. Danke

Nachdem ich meine rankinglist in mein Grid geladen und nach Account Nr's sortiert hab sieht das in etwa so aus:

Account Number--------------------Rank---Name

23-6f739h89/u1-8371065j--------74-----Loom
23-ab648912/4b-96158478-----908-----GL_Omega21487
23-ab648912/4b-96158478-----103-----GL_Omega
23-ab648912/4b-96158478-----501-----Spaceman
23-77467863/98-d7370279-----626-----Frog

( die - hab ich nur gemacht um die leerzeichen zu ersetzten, sonst hätte ich das nicht so posten können, denkt sie euch bitte weg)

ich sehe also die 3 Playercharacter von GL_Omega anhand der gleichen Account Nr.

nun möchte ich das mein Programm folgendes tun soll:

Auf knopfdruck die gesamte Rankinglist sortieren nach den Account Nr's, das es wie folgt aussieht(der rank wird komplett ausser acht gelassen, interessant sind nur name und account nr):

23-ab648912
GL_Omega21487
GL_Omega
Spaceman


daher das der ERSTE teil der Account Nr (vor dem querstrich) angezeigt wird und darunter alle Playernamen die ebenfalls diese Account Nr. haben. zwischen den verschieden Account Nr. sollte eine leerzeile sein, also das die gesamte rankinglist in etwa wie das hier aussieht:

23-ab648912
GL_Omega21487
GL_Omega
Spaceman

23-45843658
Gondom
Loom

23-32479843
Tondor
Rankor
Erasor
Ilious
Zandra


etc etc.

der code mit dem ich meine stringlist lade:

Delphi-Quellcode:
procedure TForm1.butnGetClick(Sender: TObject);
var
datei : TextFile;
  dateiname : String;
  zeile : String;
  inhalt : String;
  perslist : Sarr;
  pers : Sarr;
i, j : integer;
begin
  dateiname := ('c:\rankinglist.htm');
  AssignFile(datei, dateiname);
  reset(datei);
  inhalt := '';
  repeat
    Readln(datei, zeile);
    inhalt := inhalt + zeile;
  until eof(datei);
  CloseFile(datei);
  inhalt := getTable(inhalt);
  perslist := getEntries(inhalt);

  i := 0;
  while (perslist[i] <> '') do
  begin
    pers := processAccount(perslist[i]);
    // neu
    if i+2>10 // oder was Du eben eingestellt hast
      then Stringgrid1.RowCount:=i+2;
    // weiter
    for j := 0 to 11 do
    begin
      Stringgrid1.cells[j+1,i+1]:=pers[j];
    end;
    inc(i);
  end;
 reloadtable.Enabled := true;
      reloadhtml.Enabled := true;
end;
end;
und sortiere:

Delphi-Quellcode:
procedure SortStringGrid(var GenStrGrid: TStringGrid; ThatCol: Integer);
const
  // Define the Separator
  TheSeparator = '@';
var
  CountItem, I, J, K, ThePosition: integer;
  MyList: TStringList;
  MyString, TempString: string;
begin
  // Give the number of rows in the StringGrid
  CountItem := GenStrGrid.RowCount;
  //Create the List
  MyList := TStringList.Create;
  MyList.Sorted := False;
  try
    begin
      for I := 1 to (CountItem - 1) do
        MyList.Add(GenStrGrid.Rows[I].Strings[ThatCol] + TheSeparator +
          GenStrGrid.Rows[I].Text);
      //Sort the List
      Mylist.Sort;

      for K := 1 to Mylist.Count do
      begin
        //Take the String of the line (K – 1)
        MyString := MyList.Strings[(K - 1)];
        //Find the position of the Separator in the String
        ThePosition := Pos(TheSeparator, MyString);
        TempString := '';
        {Eliminate the Text of the column on which we have sorted the StringGrid}
        TempString := Copy(MyString, (ThePosition + 1), Length(MyString));
        MyList.Strings[(K - 1)] := '';
        MyList.Strings[(K - 1)] := TempString;
      end;

      // Refill the StringGrid
      for J := 1 to (CountItem - 1) do
        GenStrGrid.Rows[J].Text := MyList.Strings[(J - 1)];
    end;
  finally
    //Free the List
    MyList.Free;
  end;
end;
Zum größten Teil hab ich es u.a eurer Hilfe zu verdanken das ich mein programm bis hierhin fertigstellen konnte, danke dafür.
Allerdings hab ich keinen blassen schimmer wie ich das oben beschriebene bewerkstelligen kann, könnte mir vorstellen das es ein wenig komplizierter ist als das vorangegangene.
Bin relativ neu in Delphi, einiges hab ich bereits gelernt aber mit dem grid kenn ich mich noch nicht so aus. Suchfunktion hat mir keine Hilfe gebracht leider.

So hoffe ich das mir jemand hierbei behilflich sein kann, vielleciht an hand meines codes

Ich sag mal Danke im voraus Delphi-Freunde, hoffe ihr versteht mein Problem.

Rhodan
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Verschiedene Zeilen im Grid auslesen und wiedergeben

  Alt 13. Okt 2005, 06:47
Hallo rhodan,

du hast nicht gesagt, wohin die gruppierte Liste soll - oder? Ich schreibe sie in ein Memo, aber du kannst dir den Code sicher anpassen.

Delphi-Quellcode:
procedure TDemoForm.GroupButtonClick(Sender: TObject);
var
  iRow: integer;
  sPrev, sCurr: string;
begin
  Memo.Lines.Clear;
  for iRow := 1 to MAX_ROWS do
  begin
    sCurr := StringGrid.Cells[CI_ACCT, iRow];
    if sCurr <> sPrev then
    begin
      if iRow > 1 then
        Memo.Lines.Add('');
      Memo.Lines.Add(sCurr);
      Memo.Lines.Add(StringOfChar('-', 10));
      sPrev := sCurr;
    end;
    Memo.Lines.Add(StringGrid.Cells[CI_NAME, iRow]);
  end;
end;
Grüße vom marabu
Angehängte Dateien
Dateityp: zip rhodan_354.zip (2,1 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#3

Re: Verschiedene Zeilen im Grid auslesen und wiedergeben

  Alt 13. Okt 2005, 19:41
Marabu.....was kann ich sagen?
Ich fühle momentan einfach nur tiefe dankbarkeit. Vor 10 minuten hab ich luftsprünge gemacht und hab seltsame laute von mir gegeben

ich habs vorher ohne deinen quellcode versucht bin aber kläglich gescheitert. es funktioniert nun alles bei mir. Ich hab enormen respekt vor dir, du hast exakt das hinbekommen was ich wollte.
DANKE das du dir die zeit für mich genommen hast

Rhodan
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Verschiedene Zeilen im Grid auslesen und wiedergeben

  Alt 13. Okt 2005, 19:56
Rhodan, du machst mich ganz verlegen. Auf jeden Fall beneide ich dich um deine Fähigkeit Luftsprünge machen zu können. Das mit den seltsamen Lauten, ja das könnte ich auch, aber Luftsprünge...

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#5

Re: Verschiedene Zeilen im Grid auslesen und wiedergeben

  Alt 13. Okt 2005, 21:42


aber sag mal, die zahl MAX_ROWS ist ja fest definiert, kann ich da nicht die einstellungen von meinem grid einbinden, das er exakt soviele zeilen im memo erstellt wie benötigt werden?

weil, geb ich eine zu hohe zahl ein hab ich ne menge leerzeilen am endeim memo, geb ich zuwenig ein hat er nicht alle chars im memo (ich lade ja verschieden lange rankinglisten).

nette grüße von rhodan
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Verschiedene Zeilen im Grid auslesen und wiedergeben

  Alt 14. Okt 2005, 06:05
Hallo Rhodan,

du kannst MAX_ROWS einfach zu einer Form-Variablen machen und initialisierst diese Variable nach dem Parsen der Ranking-Liste mit der Anzahl - Length(persList) - der Einträge in deinem Array, dann wird dein Grid korrekt initialisiert und es gibt keine Leerzeilen. Das Memo musst du nicht vorbehandeln, da es dynamisch wächst.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#7

Re: Verschiedene Zeilen im Grid auslesen und wiedergeben

  Alt 14. Okt 2005, 22:06
hey,

jo soweit klappt es, hab das geändert(length(perslist)) was du vorgeschlagen hast, allerdings sind immernoch leere zeilen am ende des memo.

der grund:

perslist : Sarr; hab ich ja angegeben in meinem button zum laden des grid und des memo.

Delphi-Quellcode:
var
  Form1: TForm1;
type
 Sarr = Array [0..2000] of String;
allerdings ist dummerweise "Sarr" als fest definierte anzahl angegeben, hast du ne ahnung wie ich das ebenfalls von der grid-zeilen anzahl abhängig machen kann?

grüße von rhodan
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Verschiedene Zeilen im Grid auslesen und wiedergeben

  Alt 15. Okt 2005, 06:29
Sobald ich Inhalt und Aufbau der Datei RANKING.HTM verstehe, kann ich dir sicher helfen.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#9

Re: Verschiedene Zeilen im Grid auslesen und wiedergeben

  Alt 15. Okt 2005, 20:17
ist mir ja schon fast peinlich
danke dir ganz herzlichst,

rhodan
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:08 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