Autor Beitrag
Luncustaf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Mo 21.10.02 12:33 
Hi,

hab hier nen array deklariert (das erste mal) hab nur mit der hilfe gearbeitet aber irgendwie steht da nichts brauchbares drinnen.

gibt nur ei nwirkliches beispiel und das ist so:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var

    OrderDates: TArrayField;
    I: Integer;
begin
    for I := 0 to OrderDates.Size - 1 do
    begin
      if OrderDates.Fields[I].IsNull then Break;
      OrderDateListBox.Items.Add(OrderDates[I]);
    end;
end;


das problem ist aber das der array hier mit einem TArrayFiled initalisiert wird und ich das so geschrieben habe

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var
MyArray : array[1..10] of String;

.
.
.
.
.

for i := 0 to MyArray.Size -1 do
begin


nur wenn ich das so mache dann kommt immer Rekord, Objekt oder Klassentyp erforderlich

nur kann ich damit nicht wirklich was anfangen :>

gr€€tz
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 21.10.02 12:55 
Versuch es mal so:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
var 
  MyArray : Array [1..10] Of String; 
Begin
  For i := Low (MyArray) To High (MyArray) Do 
    ;
End;

Gruß
TINO
Luncustaf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Mo 21.10.02 13:21 
hmm ok thx

das hat funktioniert.

nun habe ich aber ein problem mit dem füllen von diesem array.

und zwar soll bei einer betimmten eingabe jweils ein feld von diesem array belegt werden

also beim ersten durchlauf einer schleife das erste feld beim zweiten durchlauf das zweite feld usw.

bei einer anderen eingabe sollen alle felder und deren inhalt dargestellt werden.

also wen nic hdei erste schleife 5x durchlaufen ahben sollen die ersten 5 felder belegt sein und bei der zweiten eingabe soll der inhalt der 5 felder dargestellt werden.

versteht das einer? :)

gr€€tz
JeanvanHees
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 146

win 2000
D6 Pers
BeitragVerfasst: Mo 21.10.02 13:40 
:wink2:
Zitat:

also wen nic hdei erste schleife 5x durchlaufen ahben sollen die ersten 5 felder belegt sein und bei der zweiten eingabe soll der inhalt der 5 felder dargestellt werden.

:?!?:
Jetzt hol mal tief luft....und erzähl mal ruhig was du willst.
So wie du es jetzt umschreibst ist es ein bißchen chaotisch.

_________________
Cause even though I know things won't get any better, they can certainly never get much worse!
Luncustaf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Mo 21.10.02 13:57 
ok sorry

hätte nochmal drüber lesen sollen bevor ich es abschicke.

also.

ich hab eine schleife in dieser schleife soll der array gefüllt werden.

wird diese schleife zb 5x durchlaufen, sollen die ersten 5 felder des array's belegt werden.

in der zweiten schleife sollen diese felder ausgelesen werden und ein "menü" erstellt werden

1. eintrag eins
2. eintrag zwei
3. eintrag drei
4. eintrag vier
5. eintrag fünf

dieses menü soll dynamisch nach der anzahl der felder erstellt werden die in dem array gefülltsind. also alle nachfolgenden die leer sind sollen ignoriert werden.
ich weis nicht ob das möglich ist

ausblenden Quelltext
1:
MyArray : array[1..10] of String;					


durch diese deklarierung sage ich doch das der array 10felder haben soll oder nicht?
also wenn nur bisz um feld 5 der array gefüllt wurde, soll das programm auch nur "menüeinträge" bis um 5ten feld bringen.

ich hoffe das ist nun etwas verständlicher :)

gruß Luncustaf

ps: mein code den ich bis hier hin habe

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
for i := 1 to 20
do begin
   writeln('1. array fuellen');
   writeln('3. neues Menue ausgeben');
   writeln('2. beenden');
   readln(a);
   if a = 1
   then begin
   MyArray[i] := 'Neuer Punkt';
   end;
   if a = 3
   then begin
        for x := Low (MyArray) to High (MyArray)
        do begin
           b := b +1;
           write(b);
           writeln(MyArray[i]);
           end;
   end;
   if a = 2
   then begin
        exit;
   end;
end;
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 21.10.02 14:00 
Spring doch aus der Schleife raus, wenn du feststellst, dass ein Feld des Arrays leer ist. Wenn du es so füllst wie beschrieben und keine Leerstrings zwisczhendrin zu läßt, sollte es gehen.
Luncustaf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Mo 21.10.02 14:14 
hmm

und wie frage ich ab ob das feld des arrays leer ist?
ich denk das ich dann ne andere schleife brauche


sowas in der art

ausblenden Quelltext
1:
2:
while not MyArray[i] = ''
do begin



oder ?
JeanvanHees
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 146

win 2000
D6 Pers
BeitragVerfasst: Mo 21.10.02 14:22 
Zitat:

und wie frage ich ab ob das feld des arrays leer ist?
ich denk das ich dann ne andere schleife brauche


sowas in der art

ausblenden Quelltext
1:
2:
while not MyArray[i] = ' ' 
do begin


oder?


Ja, das geht....Ich mach das auch oft...aber wenn du die antwort schon haßt, brauchst du nicht zu fragen.
Jede frage die du selber beantwortest macht dir doppelt so schlau als jede frage die du beantwortet kriegst :mahn:

P.S: Ein gutes Delphi buch ist auch 'ne gute hilfe :wink:

_________________
Cause even though I know things won't get any better, they can certainly never get much worse!
Luncustaf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Mo 21.10.02 14:28 
jo aber ich muss ja überprüfen ob meine antowort richtig ist :>
delphi buch liegt zuhause :>

wenn ich das so mache


dann kommt immer Operator ist auf den Operandentyp nicht anwendbar


gr€€tz Luncustaf
JeanvanHees
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 146

win 2000
D6 Pers
BeitragVerfasst: Mo 21.10.02 14:32 
Mach mal den NOT weg und schreib <>
NOT geht NOT immer gut :D
Also <> auf den platz von =

_________________
Cause even though I know things won't get any better, they can certainly never get much worse!


Zuletzt bearbeitet von JeanvanHees am Mo 21.10.02 14:33, insgesamt 1-mal bearbeitet
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 21.10.02 14:33 
Das geht bei mir:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.FormCreate(Sender: TObject);
var
  MyArray: array[0..9] of String;
  i: Integer;
begin
  for i := 0 to 4 do
    MyArray[i] := IntTostr(i);

  for i := 0 to High(MyArray) do
    if MyArray[i] <> '' then
      Listbox1.Items.Add(MyArray[i]);
end;
Luncustaf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Mo 21.10.02 14:40 
hmm macht das nen unterschied wenn das keine anwendung sonder nen konsolen programm ist?

sollte eigentlich nicht oder?


also es läuft zwar aber irgendwie schreibt er in den array nichts rein :>

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
for i := 1 to 20
do begin
   writeln('1. array fuellen');
   writeln('3. neues Menue ausgeben');
   writeln('2. beenden');
   readln(a);
   if a = 1
   then begin
   MyArray[i] := 'Neuer Punkt';
   end;


geht das so überhaupt?

wenn ich nun 3x 1 drücke dann müssen doch die ersten 3 felder des array's gefüllt sein oder nicht?

vllt bin ich auch nen depalla :>

hehe


gr€€tz
wieczo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48


D6 Pers, TP 7.0
BeitragVerfasst: Mo 21.10.02 22:01 
Das funzt und sieht schöner aus :wink: :

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
b := 1;
repeat
   writeln('1. array fuellen');
   writeln('3. neues Menue ausgeben');
   writeln('2. beenden');
   readln(a);
   if a = 1 then
     begin
       MyArray[b] := 'Neuer Punkt';
       b := b +1
     end
   else
     if a = 3 then
       for x := Low (MyArray) to High (MyArray) do
         begin
           write(x);
           writeln(MyArray[x]);
         end
until a = 2;

Tschö Thomas
Luncustaf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Di 22.10.02 08:17 
hi,

also das funktioniert soweit vielen danke für deine hilfe. nur mein problem ist noch ich initalisieren ja oben den Array und setze ihn auf 10 felder [1..10]

wenn nun aber die ersten beiden felder nur belegt sind gibt er das dort zwar korrekt aus aber er gibt dann auch die stellen 3 - 10 aus wo halt nichts dahinter steht und das soll vermieden werden :>

gr€€tz
Peter2002
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 103

Win XP, Win 7
Delphi 2007 / XE3
BeitragVerfasst: Di 22.10.02 09:36 
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
b := 1; 
repeat 
   writeln('1. array fuellen'); 
   writeln('3. neues Menue ausgeben'); 
   writeln('2. beenden'); 
   readln(a); 
   if a = 1 then 
     begin 
       MyArray[b] := 'Neuer Punkt'; 
       b := b +1 
     end 
   else 
     if a = 3 then 
       for x := Low (MyArray) to High (MyArray) do 
         begin 
           if MyArray[x]<>'' then   // <---
           begin
             write(x); 
             writeln(MyArray[x]); 
           end;
         end; 
until a = 2;

Jetzt sollten die leeren Felder nicht angezeigt werden
Luncustaf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Di 22.10.02 10:12 
hi,

er gibt trotzdem die nummer 3 - 10 aus

1 neuer punkt
2 neuer punkt
3
4
.
.
10

und das soll er nicht ich meine ich gebe die Zahl mit write(x) aus aber die is ja auch in der ifansweisung also hmm voll komisch :>


gr€€tz
Peter2002
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 103

Win XP, Win 7
Delphi 2007 / XE3
BeitragVerfasst: Di 22.10.02 12:55 
Wenn die nicht verwendeten Felder wirklich leer sind, dann werden diese auch nicht ausgegeben.
Vielleicht solltest du dein Arry vorher leeren.
ausblenden Quelltext
1:
2:
3:
4:
for x := Low (MyArray) to High (MyArray) do   MyArray[x] :='';
b := 1;
repeat
  ...
Luncustaf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Di 22.10.02 13:02 
juhu :> danke man ich hab schon gedacht das es an dem zähler b liegt hab da nun die ganze zeit dran rumgebastelt nun funktioniert es aber vielen dank :>


gr€€tz
Peter2002
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 103

Win XP, Win 7
Delphi 2007 / XE3
BeitragVerfasst: Di 22.10.02 13:06 
:think:
Gern geschehen