Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Schleife (https://www.delphipraxis.net/101996-schleife.html)

SaFu 21. Okt 2007 22:38


Schleife
 
hab heute schon so viele dumme ´Fragen gestellt dann kommts auf die letzte auch nicht mehr an

Wie kann ich die zeilen auch noch hochzählen lassen

Delphi-Quellcode:
//====================Desks Umbennen============================================
procedure TForm1.desk0Bis4Umbenennen;
var zahl,zahl2,a, i : integer ;
    desk0 : String;
    Desk: array [0..99] of String;

begin
   zahl := StrToInt (Edit1.text) ;
   zahl2 := StrToInt (Edit3.text) ;

     desk0:= ('DESK-0' +' = TASK(' + Edit1.text + ') LPT(PP0) WX() WY() FONT() TITLE('+ Edit2.Text + ') START(pw)');

     for i:=0 to zahl2 do
      begin
       zahl:=zahl +1 ;
       Desk[i]:=('DESK-' +(IntToStr (i +1))+' = TASK(' + (IntToStr (zahl)) + ') LPT(PP0) WX() WY() FONT() TITLE('+ Edit2.Text + ') START(pw)');

       for a:= 38 to zahl2  do
         begin
          Memo2.Lines[a]:= desk[i];
         end;
      end;
     Memo2.Lines[37]:=(desk0);
end;

inherited 21. Okt 2007 22:48

Re: Schleife
 
warum nimmst du nicht
Memo2.Lines[i+38]:= desk[i]; ?

SaFu 21. Okt 2007 22:52

Re: Schleife
 
das geht doch so nicht oder

Die zeile 37 ist festgelegt danach soll die zeilen und die desks erhöht werden also ab zeile 38 und nur so hoch zählen wie die eingabe im edit3 ist

inherited 21. Okt 2007 23:04

Re: Schleife
 
Sorry, aber ich verstehe nicht was du erreichen willst. Bitte bemühe dich klar zu äußern:
1. Was soll der Code tun
2. Was klappt nicht/Wo liegt das Problem.

Ich nehme an (der Kristallkugel sei dank) dass du von 0 bis zahl2 den Desk[i] ändern möchtest und das Ergebnis im Memo speichern möchtest, und zwar ab Zeile 38. Also wenn i=0, dann in Zeile 38, bei i=1 Zeile 39 usw.
Deswegen kannst du in jedem Schleifendurchlauf einfach auf Memo2.Lines[i+38] zugreifen.

SaFu 21. Okt 2007 23:08

Re: Schleife
 
Also eigentlich will ich genau das erreichen

so habe ich es jetzt per hand mal gemacht und das in einer schleife so hoch wie Edit3 ist

Delphi-Quellcode:
 Memo2.Lines[37]:=(desk0);
     Memo2.Lines[38]:= desk[0];
     Memo2.Lines[39]:= desk[1];
     Memo2.Lines[40]:= desk[2];
     Memo2.Lines[41]:= desk[3];
     Memo2.Lines[42]:= desk[4];
     Memo2.Lines[43]:= desk[5];
     Memo2.Lines[44]:= desk[6];
     Memo2.Lines[45]:= desk[7];
     Memo2.Lines[46]:= desk[8];
 
// usw.

inherited 21. Okt 2007 23:10

Re: Schleife
 
Und wo ist jetzt das Problem? Mach es doch mit Memo2.Lines[38+i]

SaFu 21. Okt 2007 23:13

Re: Schleife
 
bekomm das irgenwie net hin

Delphi-Quellcode:
   for i:=0 to Zahl2 do
      begin
       zahl:=zahl +1 ;
       Desk[i]:=('DESK-' +(IntToStr (i +1))+' = TASK(' + (IntToStr (zahl)) + ') LPT(PP0) WX() WY() FONT() TITLE('+ Edit2.Text + ') START(pw)');
       Memo2.Lines[38+i]:= desk[i];
      end;
     Memo2.Lines[37]:=(desk0);
 end;
hab ich es an die falsche stelle gesetzt

inherited 21. Okt 2007 23:15

Re: Schleife
 
So hatte ich mir das gedacht. Und was funktioniert daran nicht? *Kristallkugelrauskram*

SaFu 21. Okt 2007 23:16

Re: Schleife
 
egal welche zahl ich ins edit3 eingeben es wird nur bis 6 hochgezählt

inherited 22. Okt 2007 09:12

Re: Schleife
 
Sicher? Zeig mal deinen ganzen Code dieser Stelle.

SaFu 22. Okt 2007 18:04

Re: Schleife
 
So hab ich es jetzt

Delphi-Quellcode:
rocedure TForm1.desk0Bis4Umbenennen;
var zahl,zahl2,a, i : integer ;
    desk0 : String;
    Desk: array [0..99] of String;

begin
   zahl := StrToInt (Edit1.Text) ;
   zahl2 := StrToInt (ComboBox3.Text) ;

     desk0:= ('DESK-0' +' = TASK(' + Edit1.Text + ') LPT(PP0) WX() WY() FONT() TITLE('+ Edit2.Text + ') START(pw)');

     for i:=0 to Zahl2 do
      begin
       zahl:=zahl +1 ;
       Desk[i]:=('DESK-' +(IntToStr (i +1))+' = TASK(' + (IntToStr (zahl)) + ') LPT(PP0) WX() WY() FONT() TITLE('+ Edit2.Text + ') START(pw)');
       Memo2.Lines[38+i]:= desk[i];
      end;
     Memo2.Lines[37]:=(desk0);
 end;

Thorben_Ko 22. Okt 2007 20:23

Re: Schleife
 
Hat dein Memo auch genug Zeilen?
Weil sonnst scheint der Code ok zu sein ...

Thorben

SaFu 22. Okt 2007 20:25

Re: Schleife
 
ich habe dem memo scrollbars gegeben

DeddyH 22. Okt 2007 20:25

Re: Schleife
 
Du schreibst oben etwas von Edit3, fragst aber Edit1 ab :gruebel:

SaFu 22. Okt 2007 20:29

Re: Schleife
 
Ich habe jetzt eine ComboBox gesetzt mit der ich den Schleifendurchlauf Steuer
Delphi-Quellcode:

zahl2 := StrToInt (ComboBox3.Text) ;

 for i:=0 to Zahl2 do
und Edit1 erweitert nur die zahl im Task
Delphi-Quellcode:

zahl := StrToInt (Edit1.Text) ;


 TASK(' + (IntToStr (zahl))

DeddyH 22. Okt 2007 20:38

Re: Schleife
 
Hmm... dann sehe ich auf den ersten Blick auch nichts weiter. Aber wieso nimmst Du ein statisches Array, wenn Du die Anzahl der Elemente nicht kennst?

SaFu 22. Okt 2007 20:44

Re: Schleife
 
das sollte eigentlich nur ein kleines Projekt werden das jetzt schon ausgeartet ist und ich wollte eigentlich nicht soviel aúfwand betreiben.

Mich ärgert es jetzt schon das diese Schleife nicht geht.

SaFu 22. Okt 2007 20:48

Re: Schleife
 
Liste der Anhänge anzeigen (Anzahl: 1)
Vielleicht will sich das ja mal jemand angucken und einer findet den Fehler keine Angst das Programm ändert nichts am system es erzeugt ledigtlich nur eine datei

DeddyH 22. Okt 2007 20:55

Re: Schleife
 
In einem schnell dahingeschriebenen Projekt funktioniert Dein Code. Wenn ich Dein Projekt öffne, kann ich die Edits nicht fokussieren (hab den Grund auf die Schnelle nicht herausgefunden).

SaFu 22. Okt 2007 20:56

Re: Schleife
 
Du musst zuerst oben auf den Linken Button drücken dann wir die GroupBox freigegeben

DeddyH 22. Okt 2007 20:58

Re: Schleife
 
---------------------------
Medistar_updater
---------------------------
Datei C:\Dokumente und Einstellungen\Fukner\Desktop\Mediestar_Updater\Dat eisysconfs\Sysconf.S kann nicht geöffnet werden. Das System kann den angegebenen Pfad nicht finden.
---------------------------
OK
---------------------------

SaFu 22. Okt 2007 21:00

Re: Schleife
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke hab ich garnicht gesehen habs geändert

DeddyH 22. Okt 2007 21:09

Re: Schleife
 
Ich hab mal die ganzen ReadOnlys und Disables entfernt, einen Haufen Zeilen in Memo1 eingegeben und siehe da... funzt. Bist Du sicher, dass Memo1 auch genug Zeilen hat (immerhin weist Du Memo2 die Zeilen von Memo1 zu)?

[edit] Ich sehe gerade im Bezug auf Deinen anderen Thread: das Programm heißt wohl Medistar_Updater.exe ohne ie, deshalb wird die Verknüpfung nicht angelegt. [/edit]

SaFu 23. Okt 2007 05:52

Re: Schleife
 
Ja das mit der Verknüpfung habe ich gestern auch schon gesehen und siehe das es funzt mit der verknupfung hätte mich auch gewundert denn deine Komonete ging ja vorher

Hab jetzt auch mal Memo1 ReadOnly auf True gesetzt .

Die zeilen sollen aber erst imemo zwei erzeugt werden

alzaimar 23. Okt 2007 06:57

Re: Schleife
 
Du kannst in einer Stringliste (Memo.Lines) nicht einfach etwas in die i.te Zeile schreiben. Statt
Delphi-Quellcode:
Memo.Lines[x] := Foo;
Müsstest Du
Delphi-Quellcode:
Procedure AddOrAppend (aLines : TStrings; Const anIndex : Cardinal; aLine : String);
Begin
  While aLines.Count >= anIndex Do aLines.Add('');
  aLines[anIndex] := aLine;
End;

...
  AddOrAppend(Memo.Lines,x,Foo);
...
schreiben.
Ab Delphi 2005(?) kannst Du die Funktionalität mit einem Class Helper an die TStrings kleben, was OOP-mäßig besser ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:42 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