AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Im Array Element löschen

Ein Thema von G4schi · begonnen am 8. Sep 2017 · letzter Beitrag vom 8. Sep 2017
Antwort Antwort
Seite 2 von 3     12 3      
Glados
(Gast)

n/a Beiträge
 
#11

AW: Im Array Element löschen

  Alt 8. Sep 2017, 13:57
Zitat:
Ich SOLL aber das so machen, mit Record und Array, um das halt zu lernen.
Darf man fragen wer dich dazu zwingt diese 0815-Lösungen zu verwenden statt es direkt richtig zu machen?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Im Array Element löschen

  Alt 8. Sep 2017, 14:04
Darf man fragen wer dich dazu zwingt diese 0815-Lösungen zu verwenden statt es direkt richtig zu machen?
Das ist in der Schule usw. so üblich...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#13

AW: Im Array Element löschen

  Alt 8. Sep 2017, 14:07
Dann sind das meiner Meinung nach schlechte Lehrer (auch wenn ich auf die Mütze bekomme).
Dann sollen sie doch ein vernünftigeres Szenario schaffen und für Szenarien wie dieses hier direkt die richtigen Lösungen lehren und verwenden.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Im Array Element löschen

  Alt 8. Sep 2017, 14:17
Dann sind das meiner Meinung nach schlechte Lehrer (auch wenn ich auf die Mütze bekomme).
Dann sollen sie doch ein vernünftigeres Szenario schaffen und für Szenarien wie dieses hier direkt die richtigen Lösungen lehren und verwenden.
Das heißt du findest, dass Schüler die lästigen Details wie solche Algorithmen ablaufen usw. gar nicht erst lernen sollen und lieber nur bequeme Wrapper lernen sollen? Grandiose Idee...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#15

AW: Im Array Element löschen

  Alt 8. Sep 2017, 14:19
Dann sind das meiner Meinung nach schlechte Lehrer (auch wenn ich auf die Mütze bekomme).
Dann sollen sie doch ein vernünftigeres Szenario schaffen und für Szenarien wie dieses hier direkt die richtigen Lösungen lehren und verwenden.
Was lernst du denn von

List.Delete(4) ?

Gar nichts.
Zum Einstieg ist es durchaus sinnvoll den Schülern beizubringen NACHZUDENKEN.
Einen Eintrag aus einem Array zu löschen benötigt Wissen und Verständnis in einigen Bereichen und dazu ein Stück logisches Denken.
Für das Löschen eines Eintrags aus einer Liste musst du dir die obige Zeile merken und ggf. die Zahl in den Klammern ersetzen.

Die Schüler sollten trotzdem ein paar Stunden später Listen vorgestellt kriegen, nach dem Motto: "Und da hat jemand eine Liste gebaut die all die Funktionen der letzten Stunden bereits beinhaltet, sodass man diese Funktionalität nicht jedes mal neu implementieren muss!"
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73
Online

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
755 Beiträge
 
#16

AW: Im Array Element löschen

  Alt 8. Sep 2017, 14:20
for z:=Length(Kontaktliste)-1 downto 0 do

Mein zweites Array wird nun verkürzt, aber das letzte Element aus dem ersten Array nimmt es noch immer nicht mit.
Du benutzt immer Kontaktliste_2[z].Anrede := Kontaktliste[z].Anrede; etc., aber bis zu dem zu löschenden Eintrag muss es lauten Kontaktliste_2[z - 1].Anrede := Kontaktliste[z].Anrede; . Der Index muss dort ja dort unterschiedlich sein, da ein Element "fehlt".

Edit: Und setze die Länge besser vor der Schleife mit SetLength(Kontaktliste_2, Length(Kontaktliste)-1);

Geändert von Olli73 ( 8. Sep 2017 um 14:27 Uhr)
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#17

AW: Im Array Element löschen

  Alt 8. Sep 2017, 14:20
Zitat:
Im Array Element löschen
Das meine ich und nicht irgendwas mit einer TList.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#18

AW: Im Array Element löschen

  Alt 8. Sep 2017, 17:15
for z:=Length(Kontaktliste)-1 downto 0 do

Mein zweites Array wird nun verkürzt, aber das letzte Element aus dem ersten Array nimmt es noch immer nicht mit.
Du benutzt immer Kontaktliste_2[z].Anrede := Kontaktliste[z].Anrede; etc., aber bis zu dem zu löschenden Eintrag muss es lauten Kontaktliste_2[z - 1].Anrede := Kontaktliste[z].Anrede; . Der Index muss dort ja dort unterschiedlich sein, da ein Element "fehlt".

Edit: Und setze die Länge besser vor der Schleife mit SetLength(Kontaktliste_2, Length(Kontaktliste)-1);
Oder

Kontaktliste_2[High(Kontaktliste_2)].Anrede := Kontaktliste[z].Anrede;
und noch besser 1x nur

 Setlength(KontaktListe_2,length(Kontaktliste)-1); oder
Delphi-Quellcode:
For z:=i+1 to high(KontaktListe_2) do
  begin
    KontaktListe_2[z-1] := KotaktListe_2[z];
  end;
oder ich gehe mal von Record aus...

Delphi-Quellcode:
Move(KontaktListe_2[I+1],KontaktListe_2[I],(Length(KontaktListe_2)-I) * Sizeof(KontaktListe[0])); // Sizeof(Type)
Setlength(KontaktListe_2,Length(KontaktListe_2)-1);
Das würde doch ein Lerneffekt haben... und schneller als eine TList ist es auch...

Mavarik

Geändert von Mavarik ( 8. Sep 2017 um 17:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#19

AW: Im Array Element löschen

  Alt 8. Sep 2017, 20:03
Oder mit einem Array: Man kopiert den Record des letzten Elements auf das zu löschende Element und "schneidet" das letzte Elemente vom Array ab.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#20

AW: Im Array Element löschen

  Alt 8. Sep 2017, 22:03
Eine generische Lösung wäre beispielsweise:
Delphi-Quellcode:
class procedure TArrayHelper.Delete<T>(var A: TArray<T>; Index: Integer);
var
  I: Integer;
begin
  for I := Index to High(A) - 1 do
  begin
    A[I] := A[I + 1];
  end;
  SetLength(A, Length(A) - 1);
end;

class procedure TArrayHelper.Insert<T>(var A: TArray<T>; Index: Integer; const Item: T);
var
  I: Integer;
begin
  SetLength(A, Length(A) + 1);
  for I := High(A) - 1 downto Index do
  begin
    A[I + 1] := A[I];
  end;
  A[Index] := Item;
end;
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:11 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