Autor |
Beitrag |
Luncustaf
      
Beiträge: 324
Win 2k
D7 Ent.
|
Verfasst: 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:
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:
| 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
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mo 21.10.02 12: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 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
      
Beiträge: 146
win 2000
D6 Pers
|
Verfasst: Mo 21.10.02 13: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 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
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 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
|
Verfasst: 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 
      
Beiträge: 324
Win 2k
D7 Ent.
|
Verfasst: 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
Quelltext 1: 2:
| while not MyArray[i] = '' do begin |
oder ?
|
|
JeanvanHees
      
Beiträge: 146
win 2000
D6 Pers
|
Verfasst: 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
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 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
      
Beiträge: 146
win 2000
D6 Pers
|
Verfasst: Mo 21.10.02 14: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 14:33, insgesamt 1-mal bearbeitet
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 21.10.02 14: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 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 :>
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
      
Beiträge: 48
D6 Pers, TP 7.0
|
Verfasst: Mo 21.10.02 22: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 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
      
Beiträge: 103
Win XP, Win 7
Delphi 2007 / XE3
|
Verfasst: Di 22.10.02 09: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 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
      
Beiträge: 103
Win XP, Win 7
Delphi 2007 / XE3
|
Verfasst: 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.
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 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
      
Beiträge: 103
Win XP, Win 7
Delphi 2007 / XE3
|
Verfasst: Di 22.10.02 13:06
Gern geschehen
|
|