Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi array auf Inhalt überprüfen (https://www.delphipraxis.net/83493-array-auf-inhalt-ueberpruefen.html)

C.Schoch 3. Jan 2007 23:12

Re: array auf Inhalt überprüfen
 
Hi,
Wenn ich das richtig sehe dann sollte es doch so gehen:
Delphi-Quellcode:
  procedure FindFirstEmptyEdit();
var
  i: Integer;
begin
  for i := 0 to Form3.ControlCount - 1 do
  begin
    if Form1.Controls[i] is TEdit then
    begin
      if (Form1.Controls[i] as TEdit).Text = '' then
      begin
        (Form1.Controls[i] as TEdit).SetFocus;
        Break;
      end;
    end;
  end;
end;
Edit: Der erste Versuch war nichts so ganz das gewünschte
Edit2: Fehler beseitigt

Klaus01 4. Jan 2007 06:40

Re: array auf Inhalt überprüfen
 
Zitat:

Zitat von ghost1601
Guten Abend,

also ich fang am besten von vorne an. ich hab ein programm mit editfeldern. in den editfeldern werden sachen eingetragen die in ein array eines eigenen datentyps geschrieben werden. diese daten, aus dem array will ich nun durchsuchen. die suche soll mir die erste freie stelle (also die wo noch nichts steht) ausgeben. sodass ich an dieser stelle fortfahren kann und auch gleich diese stelle füllen kann.
jetzt klar?

Vielleicht gibst Du auch dann einmal das Array und dessen Datentypen bekannt.
So ist das ja nur stochern im Ungewissen.

Grüße
Klaus

ghost1601 4. Jan 2007 10:56

Re: array auf Inhalt überprüfen
 
na klar, aber gerne doch. :thumb:
Delphi-Quellcode:
datenfeld:array[1..max]of tdaten;
und tdaten ist dabei ein record bestehend aus Strings.
@ C.Schoch: tut mir leid aber das haut nicht hin...ich bekomm immer einen fehler an Form1.Controls[i].SetFocus; speziell focus kennt form1.controls nicht... :cry:

Klaus01 4. Jan 2007 11:23

Re: array auf Inhalt überprüfen
 
Zitat:

Zitat von ghost1601
na klar, aber gerne doch. :thumb:
Delphi-Quellcode:
datenfeld:array[1..max]of tdaten;
und tdaten ist dabei ein record bestehend aus Strings.
@ C.Schoch: tut mir leid aber das haut nicht hin...ich bekomm immer einen fehler an Form1.Controls[i].SetFocus; speziell focus kennt form1.controls nicht... :cry:

Delphi-Quellcode:
var
  i: Integer;
  leer:Integer;
begin
  ....
  leer:=-1;
  i:=low(datenfeld);
  while (leer < 0) and (i <= high(datenfeld)) do
    begin
      if datenfeld[i].whatever = ' ' then
        leer:=i;
      inc(i);
    end;
  ....
end;
Vielleicht so?

Genauer geht es nicht, da ich nicht weiß wie Dein TDaten ausschaut.

Grüße
Klaus

ghost1601 4. Jan 2007 12:34

Re: array auf Inhalt überprüfen
 
ich spring gleich aus'm fenster :lol:
das funzt leider auch nicht...im gegenteil da passiert so ziemlich gar nichts
ich hab das, was du geschrieben hast in eine Button procedure gepackt und er springt auf keinem fall zu der stelle im array wo noch nichts steht und das zeigt er auch nicht an
hier noch die TDaten
Delphi-Quellcode:
type tdaten=record
      clanname:string[50];
      clankuerzel:string[12];
      homepage:string[70];
      nation:string[13];
      spiel:string[20];
      kontaktname:string[30];
      icq:string[12];
      msn:string[30];
      maps:string[150];
      kommentar:string[150];
end;

const max=100;

var p:integer;
    daten:tdaten;
    datenfeld:array[1..max]of tdaten;
    datendatei:file of tdaten;

Klaus01 4. Jan 2007 15:47

Re: array auf Inhalt überprüfen
 
Delphi-Quellcode:
var
  i: Integer;
  leer:Integer;
begin
  ....
  leer:=-1;
  i:=low(datenfeld);
  while (leer < 0) and (i <= high(datenfeld)) do
    begin
      if datenfeld[i].clanname = '' then      // <- etwas geändert
        leer:=i;
      inc(i);
    end;
  if leer = -1 then
    ShowMessage('keine leere Stelle gefunden')
  else
    ShowMessage('leere Stelle liegt an Position'+ IntToStr(leer));
  ....
end;
Funktionert aber auch nur dann wenn der clanname wirklich nichts enthält.
Oder was ist Dein Kriterium um zu sehen, daß das Datenfeld leer ist?

Grüße
Klaus

ghost1601 4. Jan 2007 16:12

Re: array auf Inhalt überprüfen
 
super das funktioniert. genauso sollte es gehn...hab vielen dank :thumb: :thumb: :thumb:
wäre natürlich um vieles besser wenn er gleich an die stelle springen würde... :?

Klaus01 4. Jan 2007 18:56

Re: array auf Inhalt überprüfen
 
Da ich Dein System immer noch nicht so ganz durchdrungen habe.

Ein Arrayfeld ist einem Editx zugeordnet - ist das richtig?
datenfeld[1] -> edit1.text z.B.

Wenn dem so ist, dann kannst Du doch mit FindComponent arbeiten.

Delphi-Quellcode:
(FindComponent('Edit'+inttostr(leer)) as TEdit).setFocus;
Wenn nicht dann sag' mir einmal was du damit meintest:
Zitat:

wäre natürlich um vieles besser wenn er gleich an die stelle springen würde...
Grüße
Klaus

C.Schoch 4. Jan 2007 21:41

Re: array auf Inhalt überprüfen
 
Hi,
Ich hab meine Funkion noch mal geändert jetzt gehts falls einer mal sowas braucht. War frei geschrieben. :firejump:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 Uhr.
Seite 2 von 2     12   

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