| Autor | Beitrag | 
| Luncustaf 
          Beiträge: 324
 
 Win 2k
 D7 Ent.
 
 | 
Verfasst: Mo 21.10.02 11: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:
 		                       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 
 		                       Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 
 | varMyArray : 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 
          
  Beiträge: 9839
 Erhaltene Danke: 45
 
 Windows 8.1
 Delphi XE4
 
 | 
Verfasst: Mo 21.10.02 11:55 
 
Versuch es mal so:
 		                       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  
          Beiträge: 324
 
 Win 2k
 D7 Ent.
 
 | 
Verfasst: Mo 21.10.02 12: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 
          Beiträge: 146
 
 win 2000
 D6 Pers
 
 | 
Verfasst: Mo 21.10.02 12:40 
 
  	  | 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  
          Beiträge: 324
 
 Win 2k
 D7 Ent.
 
 | 
Verfasst: Mo 21.10.02 12: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
 		                       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
 		                       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 20do 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
 
 
 
 
 | 
Verfasst: Mo 21.10.02 13: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  
          Beiträge: 324
 
 Win 2k
 D7 Ent.
 
 | 
Verfasst: Mo 21.10.02 13: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
 		                       Quelltext 
 									| 1:2:
 
 | while not MyArray[i] = ''do begin
 |  oder ? | 
|  | 
| JeanvanHees 
          Beiträge: 146
 
 win 2000
 D6 Pers
 
 | 
Verfasst: Mo 21.10.02 13: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
 
 
 		                       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    P.S: Ein gutes Delphi buch ist auch 'ne gute hilfe   _________________ Cause even though I know things won't get any better, they can certainly never get much worse!
 | 
|  | 
| Luncustaf  
          Beiträge: 324
 
 Win 2k
 D7 Ent.
 
 | 
Verfasst: Mo 21.10.02 13: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 
          Beiträge: 146
 
 win 2000
 D6 Pers
 
 | 
Verfasst: Mo 21.10.02 13:32 
 
Mach mal den NOT weg und schreib <>
 NOT geht NOT immer gut     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 13:33, insgesamt 1-mal bearbeitet
 | 
|  | 
| Luckie Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mo 21.10.02 13:33 
 
Das geht bei mir:
 		                       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  
          Beiträge: 324
 
 Win 2k
 D7 Ent.
 
 | 
Verfasst: Mo 21.10.02 13: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 :>
 		                       Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 
 | for i := 1 to 20do 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 
          Beiträge: 48
 
 
 D6 Pers, TP 7.0
 
 | 
Verfasst: Mo 21.10.02 21:01 
 
Das funzt und sieht schöner aus    :
 		                       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  
          Beiträge: 324
 
 Win 2k
 D7 Ent.
 
 | 
Verfasst: Di 22.10.02 07: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 
          Beiträge: 103
 
 Win XP, Win 7
 Delphi 2007 / XE3
 
 | 
Verfasst: Di 22.10.02 08:36 
 
		                       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  
          Beiträge: 324
 
 Win 2k
 D7 Ent.
 
 | 
Verfasst: Di 22.10.02 09: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 
          Beiträge: 103
 
 Win XP, Win 7
 Delphi 2007 / XE3
 
 | 
Verfasst: Di 22.10.02 11:55 
 
Wenn die nicht verwendeten Felder wirklich leer sind, dann werden diese auch nicht ausgegeben.
 Vielleicht solltest du dein Arry vorher leeren.
 		                       Quelltext 
 									| 1:2:
 3:
 4:
 
 | for x := Low (MyArray) to High (MyArray) do   MyArray[x] :='';b := 1;
 repeat
 ...
 |  | 
|  | 
| Luncustaf  
          Beiträge: 324
 
 Win 2k
 D7 Ent.
 
 | 
Verfasst: Di 22.10.02 12: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 
          Beiträge: 103
 
 Win XP, Win 7
 Delphi 2007 / XE3
 
 | 
Verfasst: Di 22.10.02 12:06 
 
  Gern geschehen | 
|  |