![]() |
array auf Inhalt überprüfen
Hiho,
ich habe eine form in der mehrere editfelder vorhanden sind. aus diesen editfelder werden daten entnommen die dann in ein array geschrieben werden sollen. nun hab ich das problem, dass ich mit einem button direkt an die stelle springen will wo noch kein eintrag vorhanden ist. ich habe allerdings keine ahnung wie ich das machen kann. ich denke man müsste erstmal das array überprüfen ob an stelle x ein eintrag vorhanden ist. kann mir da jemand weiterhelfen, also speziellan der stelle wie ich das array überprüfen kann? thx |
Re: array auf Inhalt überprüfen
Hi,
du könntest deine Edit-Felder in ein array of TEdit eintragen und dann mit einer Schleife über dieses array gehen um ein leeres Feld zu finden - etwa so:
Delphi-Quellcode:
Grüße vom marabu
var
EditArray: array of TEdit; i: Integer; begin for i := Low(EditArray) to High(EditArray) do if EditArray[i].Text = '' then begin EditArray[i].SetFocus; Break; end; end; |
Re: array auf Inhalt überprüfen
Zitat:
|
Re: array auf Inhalt überprüfen
Hallo,
Zitat:
Zitat:
Zitat:
Freundliche Grüße |
Re: array auf Inhalt überprüfen
hi again^^:lol:,
das array in dem die daten stehen ist natürlich gefüllt und sortiert (das hätte ich erwähnen müssen, da hast du vollkommen recht). die einträge dort sind von stelle 1 aufwärts eingetragen, derzeit bis zur stelle 11. die 12 wäre daher die erste freie stelle. und die soll das programm finden :-D falls du sonst noch weitere anforderungen erfahren willst, frag doch einfach. :thumb: |
Re: array auf Inhalt überprüfen
Hallo,
eine Möglichkeit wäre, das Array als dynamisches Array zu deklarieren. Es wird immer so groß gemacht, wie gerade benötigt. Die Länge fragt man mit "length(..)" ab, vergrößert wird es mit "setlength(..)". Achtung: Die Zählung beginnt immer bei 0! Bsp.: 12 Einträge: 0 .. 11 "n:=length(array)" ergibt den Wert 12, mit setlength(array,n+3) wird das Array um 3 Plätze erweitert , der erste freie platz in dass array[n]. Gruß Thales |
Re: array auf Inhalt überprüfen
Was verstehst du unter "Stelle"?
Wie ist die Ordnung definiert? |
Re: array auf Inhalt überprüfen
@thales: das wäre eine möglichkeit...aber ich denke dadurch würde ich nur noch mehr probleme bekommen weil dann anderswo etwas nicht hinhaut :wink:
@marabu: mit stelle ist die position im array gemeint |
Re: array auf Inhalt überprüfen
Hallo,
ich verstehe zwar immer noch nicht, was du da vorhast, aber wenn ich das Suchen nach einem unbelegten Slot im Array als unabhängiges Teilproblem betrachte, dann empfehle ich dir statt einem Array eine TObjectList zu verwenden. Mit demr Methodenaufruf IndexOf(nil) bekommst du dann den Index des ersten freien Slots. Gute Nacht |
Re: array auf Inhalt überprüfen
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? |
Re: array auf Inhalt überprüfen
Hi,
Wenn ich das richtig sehe dann sollte es doch so gehen:
Delphi-Quellcode:
Edit: Der erste Versuch war nichts so ganz das gewünschte
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; Edit2: Fehler beseitigt |
Re: array auf Inhalt überprüfen
Zitat:
So ist das ja nur stochern im Ungewissen. Grüße Klaus |
Re: array auf Inhalt überprüfen
na klar, aber gerne doch. :thumb:
Delphi-Quellcode:
und tdaten ist dabei ein record bestehend aus Strings.
datenfeld:array[1..max]of tdaten;
@ 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: |
Re: array auf Inhalt überprüfen
Zitat:
Delphi-Quellcode:
Vielleicht so?
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; Genauer geht es nicht, da ich nicht weiß wie Dein TDaten ausschaut. Grüße Klaus |
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; |
Re: array auf Inhalt überprüfen
Delphi-Quellcode:
Funktionert aber auch nur dann wenn der clanname wirklich nichts enthält.
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; Oder was ist Dein Kriterium um zu sehen, daß das Datenfeld leer ist? Grüße Klaus |
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... :? |
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:
Wenn nicht dann sag' mir einmal was du damit meintest:
(FindComponent('Edit'+inttostr(leer)) as TEdit).setFocus;
Zitat:
Klaus |
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 12:52 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-2025 by Thomas Breitkreuz