AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Inhalt von Array nutzen

Ein Thema von JumpFrog · begonnen am 17. Jul 2009 · letzter Beitrag vom 20. Jul 2009
Antwort Antwort
Seite 1 von 3  1 23      
JumpFrog

Registriert seit: 15. Mär 2009
26 Beiträge
 
#1

Inhalt von Array nutzen

  Alt 17. Jul 2009, 16:51
hey leute,


also folgendes, ich möchte über ein for schleife das alle Panels auf Visibel überprüft werden und fals diese halt sichtbar sind, unsichtbar gemacht werden.

Delphi-Quellcode:
procedure...
var I:integer;

begin
for I := 1 to high(oberflächen) do
begin
// hier kommt die if bedinung mit den Panel.visible abfragen hin
end;

end;
in dem Array oberfläche sind alle Panels enthalten. Wie schaffe ich es jetzt eine If schleife zu schreiben die den wert hinter jedem Array nihmt und halt als jeweiligen Panel.visible "darstellt". Ich hoffe ich konnte mich richtig ausdrücken, denn so wirklich gut in Delphi bin ich noch nicht von daher fällt das beschreiben doch zum Teil recht schwer.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#2

Re: Inhalt von Array nutzen

  Alt 17. Jul 2009, 16:57
Wie ist denn das Array definiert?

Wie man auf die Elemente eines Arrays zugreift weißt du?
Wie man eine If-Abfrage macht auf?
Und wie man .Visible ausließt/setzt, sollte auch bekannt sein (ist ja "nur" ein Boolean).

Also selbst mit wenig Wissen kann ich da grad kein Problem erkennen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Inhalt von Array nutzen

  Alt 17. Jul 2009, 16:58
Hi,

Delphi-Quellcode:
begin
for I := 1 to high(oberflächen) do
begin
  if Assigned(oberflächen[I]) and (oberflächen[I] is TPanel) then
    (Oberflächen[I] as TPanel).Visible := False;
end;
Gruß oki

[edit] himitsu war schneller und ich hab mir hier die Prüfung auf Visible gespart, da ich davon ausgehe, dass alle Panels unvisible geschaltet werden sollen. [/edit]
42
  Mit Zitat antworten Zitat
JumpFrog

Registriert seit: 15. Mär 2009
26 Beiträge
 
#4

Re: Inhalt von Array nutzen

  Alt 17. Jul 2009, 17:05
Zitat von himitsu:
Wie ist denn das Array definiert?

Wie man auf die Elemente eines Arrays zugreift weißt du?
Wie man eine If-Abfrage macht auf?
Und wie man .Visible ausließt/setzt, sollte auch bekannt sein (ist ja "nur" ein Boolean).

Also selbst mit wenig Wissen kann ich da grad kein Problem erkennen.
If Abfrage ja weiß ich, Visible weiß ich auch. Wie ich auf die Elemente zugeife. Naja ich habe damit noch nicht viel gemacht, meistens waren da nur zahlen drinne, aber keine Objektnamen (wie jetzt eben der name eines Panels).

Es wird mit sicherheit kein Problem sein im nachhinein denk ich mir wieder "Man wieso bist du da nicht selbst draufgekommen"


@oki:

Wenn ich die If Bedingung richtig deute, wird nachgesehen ob das Array (Oberfläche[I]) ein TPanel ist. Aber er soll schaun ob es sichtbar ist. Denn wenn das so ist soll es unsichtbar werden.

LG JumpFrog

PS: Achja ich das Array is vom Typ string, ich weiß nicht ob das richtig ist, aber in meinen Augen waren die Namen von den Panels ja nicht weiter als Zeichenketten.

EDIT: oki hat editet somit hat sich die Aussage über seinen Quellcode erledigt Trotzdem bringt er mir den Fehler Inkompartibler Typ (String und TPanel). Gibt es einen Datentyp Tpanel? ó.o
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#5

Re: Inhalt von Array nutzen

  Alt 17. Jul 2009, 17:09
nun ja, eigentlich wollt ich es ja nicht direkt einfach so verraten,
denn so schwer isses ja nicht

Delphi-Quellcode:
for I := 1 to high(oberflächen) do
  if (oberflächen[I] as TPanel).Visible then
    (oberflächen[I] as TPanel).Visible := False;

// oder

for I := 1 to high(oberflächen) do
  (oberflächen[I] as TPanel).Visible := False;

// oder

for I := 1 to high(oberflächen) do
  (oberflächen[I] as TPanel).Hide;
wenn man davon ausgeht, daß nur TPanel im Array drinen und alles "besetzt" ist, dann kann man sich die Prüfungen auf Vorhandensein und Typ sparen.

und falls oberflächen als Array of TPanel definiert ist, dann könnte man auch das as TPanel ganz weglassen
for I := 1 to high(oberflächen) do oberflächen[I].Hide; [edit]
wenn das Array nur die Namen enthält, dann mußt du mit Delphi-Referenz durchsuchenFindComponent/Hier im Forum suchenFindComponent natürlich erstmal die Panels suchen.

und TPanel ist kein Datentyp, das ist der Object-Typ des Panels.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Inhalt von Array nutzen

  Alt 17. Jul 2009, 17:47
Kleine Performanceoptimierung:
Delphi-Quellcode:
for I := 1 to high(oberflächen) do begin
  if Assigned(oberflächen[I]) and (oberflächen[I] is TPanel) then
    TPanel(Oberflächen[I]).Visible := False; // <<-- AS ist überflüssig, weil vorher mit IS geprüft wurde.
end;
Der 'as' Operator prüft nochmals, ob das Objekt passt, das wurde aber vorher schon über 'is' geprüft.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Noedel
(Gast)

n/a Beiträge
 
#7

Re: Inhalt von Array nutzen

  Alt 17. Jul 2009, 21:00
aber ich wette, du kannst es immer noch nich kompilieren wenn da "ä" im code steht. nur buchstaben des englischen alphabets dürfen benutzt werden...
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

Re: Inhalt von Array nutzen

  Alt 17. Jul 2009, 21:03
Zitat von Noedel:
aber ich wette, du kannst es immer noch nich kompilieren wenn da "ä" im code steht. nur buchstaben des englischen alphabets dürfen benutzt werden...
Unter Delphi 7 sicherlich - inzwischen darfste deinen Variablen auch Namen mit Accents, Cedilles und Umlauten geben
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#9

Re: Inhalt von Array nutzen

  Alt 17. Jul 2009, 21:22
selbst Japanisch ist erlaubt (quasi fast der ganze Unicodebereich)

auf den Delphitagen konnten dieses sich auch Besitzer eines älteren Delphis davon überzeugen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
JumpFrog

Registriert seit: 15. Mär 2009
26 Beiträge
 
#10

Re: Inhalt von Array nutzen

  Alt 19. Jul 2009, 01:37
also ich kann machen was ich will aber ich bekomm immerwieder nen Fehler...

Zitat:
[Pascal Fehler] Unit1.pas(516): E2008 Inkompatible Typen
[Pascal Fehler] Unit1.pas(516): E2015 Operator ist auf diesen Operandentyp nicht anwendbar
[Pascal Fehler] Unit1.pas(528): E2010 Inkompatible Typen: 'string' und 'TPanel'
[Pascal Fehler] Unit1.pas(529): E2010 Inkompatible Typen: 'string' und 'TPanel'
[Pascal Fataler Fehler] Project1.dpr(5): F2063 Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
Hier mal die Fehler.

oberflaechen: array[1..100] of string; und hier noch das erstellte array...

um ehrlich zu sein verstehe ich das so, dass wie es schon da steht, es inkompatible Typen sind. Leider weiß ich nicht was ich daran ändern kann ^^
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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