AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zahlen überprüfen --> keine darf doppelt
Thema durchsuchen
Ansicht
Themen-Optionen

Zahlen überprüfen --> keine darf doppelt

Ein Thema von Christian18 · begonnen am 29. Jun 2007 · letzter Beitrag vom 2. Jul 2007
Antwort Antwort
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#1

Re: Zahlen überprüfen --> keine darf doppelt

  Alt 29. Jun 2007, 18:49
Mal mein Ansatz als Code:

Delphi-Quellcode:
function CheckDuplicates(ParentControl: TWinControl; var WrongEdit: TEdit): Boolean;
var
  i,n: Integer;
  ba: array of Boolean;
begin
  Result := False;
  n := 0;

  // Edits zaehlen
  for i := 0 to Pred(ParentControl.ControlCount) do
    if ParentControl.Controls[i].InheritsFrom(TEdit) then
      Inc(n);
  // Keine Edits? Dann Ende.
  if n = 0 then exit;
  // ByteArray setzen
  SetLength(ba, n);
  // Edits checken
  for i := 0 to Pred(ParentControl.ControlCount) do
    if ParentControl.Controls[i].InheritsFrom(TEdit) then
    begin
      // Zahl auslesen, wenn keine Zahl dann 0, wenn 0 dann ignorieren
      n := StrToIntDef((ParentControl.Controls[i] as TEdit).Text, 0) - 1;
      if n >= 0 then
      begin
        // Mit Array vergleichen
        If ba[n] then
        begin
          WrongEdit := (ParentControl.Controls[i] as TEdit);
          Result := True;
          Exit;
        end else
          ba[n] := true;
      end;
    end;
end;
Es geht die Edits unter einem Control durch, zählt TEdit-Ableger, und prüft gegen ein dynamisches Bool-Array.

Trifft es auf ein Edit mit einer Zahl, die schon existiert, bricht es ab und notiert dieses Edit in WrongEdit. So kann man dieses selektieren, markieren, etc.

Aufgerufen wereden könnt es etwa so:
Delphi-Quellcode:
var
  we: Tedit;
begin
  if CheckDuplicates(Panel1, we) then
  begin
    // mach etwas mit we
  end;
end;
Ein netter Nebeneffekt ist, dass es Zahlen, die grösser als die Anzahl der Edits sind ebenfalls als Doppelte angezeigt werden...

[edit] noch ein bissel Entbugged [/edit]
  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 06:25 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 by Thomas Breitkreuz