Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Doppelten String nicht übergeben (https://www.delphipraxis.net/93773-doppelten-string-nicht-uebergeben.html)

Klaus01 11. Jun 2007 17:50

Re: Doppelten String nicht übergeben
 
Nun, wenn Du die Stringlist sortierst ändert sich auch die Reihenfolge
in der die Strings in der Liste angeordnet sind.

Ich weiß nicht ob Du das willst?

Wenn Du nur zwei Spalten auf Einträge überprüfen willst die schon vorhanden sind, warum
gehst Du dann nicht Zeile für Zeile die Spalten durch und schaust nach ob
ein Eintrag mit dem Eintrag Deines Editfeldes übereinstimmt.

Delphi-Quellcode:
for i:=0 to StringGrid1.rowCount -1 do
  begin
    if StringGrid1.Cells[11,i] <> Edit1.text then
      // füge hinzu
   else
     // mache nichts
  end;
Grüße
Klaus

SaFu 11. Jun 2007 17:51

Re: Doppelten String nicht übergeben
 
Das ist eigentlich egal es wre sogar besser wenn es sotiert wäre

Klaus01 11. Jun 2007 17:59

Re: Doppelten String nicht übergeben
 
Hallo Sascha,

das sollte in etwas so gehen:

Delphi-Quellcode:
var
  sl: TStringList;

begin
  sl := TStringList.create;
  sl.sorted := true;                // Liste sortieren Modus
  sl.duplicated := dupIgnore;       // keine doppelten Einträge
  sl.assign(StringGrid1.cols[11]);  //  zuweisen der Spalte 11 in die StringListe
  sl.add(edit1.text);               // hinzufügen des neuen Textes, wenn doppelt wird er nicht hinzugefügt
  StringGrid1.cols[11].assign(sl);  // zuweisen der StringListe in die Spalte 11
  sl.free;                          // freigeben der StringListe
end;
Habe es nicht getestet.
Grüße
Klaus

SaFu 11. Jun 2007 18:11

Re: Doppelten String nicht übergeben
 
Naja funktioniert nicht ganz

CCRDude 11. Jun 2007 18:13

Re: Doppelten String nicht übergeben
 
Dann musst Du "was" tun, damit es klappt.

...

Sorry, ist genauso ne Antwort wie die Aussage "funktioniert nicht ganz" ;)

Ich denke, das zuweisen per Add(andereliste.Text) kann auch bzgl. dupIgnore nicht funktionieren, wenn müssten alle getrennt zugewiesen werden (for i := ... to Count do Add(liste[i])...).

SaFu 11. Jun 2007 18:36

Re: Doppelten String nicht übergeben
 
Verstehe deinen satz nicht genau meinst du die Spalten von das vom Klaus war doch schon ganz gut oder verstehe ich da was nicht

Klaus01 11. Jun 2007 20:07

Re: Doppelten String nicht übergeben
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, ich habe mal mit dem StringGrid ein wenig rumespielt und festgestellt,
daß das OnSetEditText Ereignis zu jedem Tastendruck abgefeuert wird der im EditModus
in einer Zelle getätigt wird. Und das ist denkbar ungünstig zu nutzen um zu überprüfen
ob eine Text/String schon in der Spalte vorhanden ist.

Ist es in Deinem Programm nicht möglich, die Dateneingabe getrennt vom StringGrid zu machen?
Das würde die Suche nach Duplikaten erheblich vereinfachen.

Ich hätte mir das so vorgestellt:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i:Byte;
  gefunden:Boolean;
begin
  gefunden:=false;
  for i:=0 to StringGrid1.RowCount -1 do
    if StringGrid1.Cells[1,i] = edit1.Text then
      begin
        gefunden:=true;
      end;
  if not gefunden then
    begin
      StringGrid1.RowCount := StringGrid1.RowCount +1;
      StringGrid1.Cells[1,StringGrid1.RowCount -2]:=Edit1.Text;
    end;

end;
Grüße
Klaus

SaFu 11. Jun 2007 21:26

Re: Doppelten String nicht übergeben
 
Liste der Anhänge anzeigen (Anzahl: 1)
So ab mal die funktion vom StringGrid angehäng

Wenn mann in der spalte 11 und 12 was eingibt werden diese ans Edit weiter gegeben und vom Edit ans label

Was ich jetzt gerne machen würde ist das im label keine doppelten einträge stehen ob die jetzt vom Editfeld oder vom Stringgrid gefiltert werden ist eigentlich egal

komm einfach nicht weiter

Hoffe es hilft weiter quelltext ist auch dabei

Klaus01 12. Jun 2007 06:43

Re: Doppelten String nicht übergeben
 
Zitat:

Zitat von fuknersascha
...
Wenn mann in der spalte 11 und 12 was eingibt werden diese ans Edit weiter gegeben und vom Edit ans label

Was ich jetzt gerne machen würde ist das im label keine doppelten einträge stehen ob die jetzt vom Editfeld oder vom Stringgrid gefiltert werden ist eigentlich egal

Guten Morgen Sascha,

habe mir Deinen Quelltext noch nicht angeschaut,
aber wenn das Label alle die Informationen hat welche schon eingegeben wurden,
dann kannst Du das auch nur anhand des Labels überprüfen ob die gleichen Daten schon vorhanden sind.

Ich würde das machen wenn die Eingabe vom Edit in das Label geht.
Hier kannst Du z.B. mit pos überprüfen, ob der Edit Inhalt im Label schon vorhanden ist.

Delphi-Quellcode:
if (pos(Edit1.Text,label1.caption) > 0 then
  // Eintrag vorhanden
else
  // Eintrag nicht vorhanden
Grüße
Klaus

SaFu 12. Jun 2007 09:53

Re: Doppelten String nicht übergeben
 
funktioniert leider auch nicht

Kann es sein das es nicht funktioniert weil der eingegebene text als ganzer string eingelesen wird und deshalb nicht geprüft wird ?

in den letzten zwei spalten im StringGrid werden nur abkürzungen max 2 buchstaben eigegeben und dann muss noch ein komma gesetzt werden das es besser zu lessen ist im Label das ist die einzige trennung de gesetzt werden muss


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:18 Uhr.
Seite 2 von 3     12 3      

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