Autor Beitrag
klabri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Do 22.04.10 19:23 
Hallo

ich möchte gerne ,dass in diesem
Array
[3,5,7,9,11,13,17........]

die 7 'gelöscht' wird und alle Zahlen nach der 7
eine Stelle vorrücken..


Moderiert von user profile iconNarses: Topic aus Algorithmen, Optimierung und Assembler verschoben am Fr 23.04.2010 um 01:18
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Do 22.04.10 19:29 
TList verwenden.
Chemiker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 194
Erhaltene Danke: 14

XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit, Win 10, Win 11
BDS 2006, RAD Studio 2009+C++, Delphi 13, VS 2010 Prof.
BeitragVerfasst: Do 22.04.10 19:32 
Hallo klabri,

dann wird Dir nichts anderes übrig bleiben und alle Nachfolgende Zahlen auszulesen und einen Platz nach vorne in den Array zu speichern. Wenn das öfters vorkommt, würde ich mit einer Liste arbeiten.

Bis bald Chemiker
klabri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Fr 23.04.10 00:42 
Hallo,
danke für den Tipp mit TStringList,Anlegen und Ausgeben einer Liste funktioniert,
was nicht funktioniert ist ,bestimmte Zahlen ,z.Bsp alle durch 3 teilbaren Zahlen
zu entfernen. Es funktioniert mit 2, aber nicht mit 5 oder 7 ...
Leider finde ich den Fehler nicht .

ausblenden Delphi-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:
25:
26:
27:
28:
 


var List:TStringList;
 i,p:integer;

begin
List:=TStringList.Create;
try

     for i:= 2 to 50 do begin
     List.Add(Inttostr(i));
     end;

          for i := List.Count-1 downto 0 do    /??????????????????????
              begin
              p:=StrtoInt(Edit1.Text);         / hier sollten alle Zahlen aus 
              if i mod p =0 then              / der Liste entfernt werden , 
                                              / die durch p ohne Rest teilbar sind; 
              begin                           / funktioniert nicht richtig .... 
              List.Delete(i);
              end;
              Memo1.Lines.Add(List.Text);
              end;
 finally;
 List.Free;
 end;
 end;
klabri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Fr 23.04.10 01:01 
Hallo,
der Fehler ist gefunden ;so funktioniert es ; hier werden z.Bsp alle Zahlen,teilbar
durch 7 gelöscht; danke für die Hilfe;

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
 for i:= 0 to 50 do begin
     List.Add(Inttostr(i));
     end;

          for i := List.Count-1 downto 2 do
              begin

              if i mod 7=0 then
              begin
              List.Delete(i);
              end;
              end;
              Memo1.Lines.Add(List.Text);
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 23.04.10 07:30 
Wie kommst du eigentlich plötzlich auf TStringList? Vorgeschlagen wurde schließlich TList. Denn so wandelst du die Zahlen in Strings um statt direkt mit den Zahlen zu arbeiten...
klabri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Sa 24.04.10 00:17 
Hallo Jaenicke,
TStringList, weil ich zu dem Thema zuerst etwas gefunden habe,was verständlich geschrieben war,gut umzusetzen war.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Zur Ergänzung , das ganze sollte dazu dienen eine Liste mit Primzahlen zu erstellen.
2-3-4-5-6-7-8-9
2-3-5-7-9
2-3-5-7......usw.
,funktioniert aber so nicht, weil die Liste irgendwie immer überschrieben wird.
Hat jemand noch einen guten Tipp ?
klabri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Mo 26.04.10 17:36 
Meine Frage war :"Wie lässt sich ein Array-Element ohne Lücke löschen ?"

eine Antwort findet sich unter www.delphi3000.com in dem Artikel von Marius_catalin Petrisor :" How to delete an element from a Dynamic Array"

eine weitere Antwort gibt es bei 'Delphi-Treff' www.delphi-treff.de/...C3%BCcke%20entsteht/

Damit wäre meine Frage beantwortet. Beide Lösungen sieht recht ähnlich und gut verständlich beschrieben. :D :D

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.