Autor Beitrag
IhopeonlyReader
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Do 09.05.13 19:22 
Ich habe eine Verkette Liste erstellt, als Inhalt hat es ein Record names RAccount...
mir gelingt es nicht die "account loeschen" procedure zu erstellen..
der fehler liegt beim setzten des neuen Endes !
Ende := pointer^.before;
zeigt inkompatible typen obwohl sowohl before, als auch Ende vom Typ ^TSpeicher sind..
Ende := @(pointer^.before^);
lässt zwar das kompilieren zu, gibt aber danach (beim neuen acc-erstellen oder sonst wo) fehler aus !

ich habe die Unit + Test-projekt angehängt...
wäre nett wenn ihr es euch mal anschaut und den Fehler nennt... (ja ich habe nicht die "Standart-Begriffe" verwendet, und ob es eine "richtige" verkette Liste ist, weiß ich auch nicht...
Wie gesagt bin selbst-beibringer und daher bin ich manchmal sehr gewöhnungsbedürftig in meiner programmierart
Einloggen, um Attachments anzusehen!
_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 09.05.13 23:17 
Moin!

Nur damit ich sicher bin, dich richtig verstanden zu haben:
  • Du hast ein Problem
  • Du hältst dich nicht an die Standards
  • Wir sollen uns an deine "Art des Programmierens" anpassen (wobei hier "Art" schon fast angelsächsisch gemeint scheint :zwinker:)
  • Du gibst eine eher "kurze" Fehlerbeschreibung ohne Stelle an und haust mal eben den kompletten Code raus
Hab ich was übersehen? :gruebel:

cu
Narses

//EDIT: Ich bin mal nicht so ;) Suchen liefert sowas hier:
www.entwickler-ecke.....php?p=650275#650275
Kannst auch mal nach Suche in: Delphi-Forum, Delphi-Library LINEARE LISTE suchen. :idea:

_________________
There are 10 types of people - those who understand binary and those who don´t.

Für diesen Beitrag haben gedankt: FinnO, Mathematiker, Xion
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Fr 10.05.13 00:34 
ja :) nur ich arbeite auch mit einem Zeiger nach hinten!
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
type
TKnoten = class
  before: ^TKnoten;
  next: TKnoten;
  Inhalt: RDaten;
end;

Dann habe ich eine Unit erstellt mit folgenden Proceduren/Funktionen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
      constructor Create; overload;
      constructor Create(const Benutzername, Passwort: String); overload;
      procedure Erweitere(const Benutzername, Passwort: String);
      function vorhanden(const Benutzername: String): Boolean;
      function Finde(const Benutzername: String): PAccount;
      function loesche(const Benutzername: String): Boolean;
      destructor loeschen;
      //  - - - - - - - - - - - - - -  Zusatzfunktionen  - - - - - - - - - - - - - - -
      function AenderePasswort(const Benutzername, NeuesPasswort: String): Boolean;
      function Kontrolliere: Boolean;


der Fehler liegt in der function loesche(const Benutzername: String): Boolean; bei dem Punkt
Ende := Ende^.before; //funktioniert nicht
also so geschrieben:
Ende := @Ende^.before^;

es funktioniert zwar, aber es gibt nun fehler! (zugriffsverletzung)

Zur Vereinfachung habe ich anstatt nur den Quelltext der Unit zu zeigen direkt ein Testprogramm mitgeliefert, dass alle Funktionen einzeln testet!

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 432
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: Fr 10.05.13 01:20 
user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
es funktioniert zwar, aber es gibt nun fehler! (zugriffsverletzung)

Ah ja.

Ich lese hier fleißig, antworte aber nur manchmal.
Was mir hier fehlt ist eine mit vernünftigen Aufwand nachvollziehbare Fehlerbeschreibung.

Moderiert von user profile iconNarses: Zitat mit Tags garniert.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 10.05.13 01:50 
Moin!

Mal generell: Objekt-Variablen sind bereits Pointer, du kannst also den Dereferenzierungsoperator (das Caret) weglassen! :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Fr 10.05.13 04:36 
Warum verarbeitest Du die Liste nicht in dem Objekt, das dafür zuständig ist: TList.

Die einzelnen Einträge der TList (Zeiger) sind dann Objekte Deines Typs. Dann sollte das wandern innerhalb der Liste, das Löschen einzelner Einträge oder gar der gesamten Liste nicht schwer sein. Und Du benötigst für das einzelne Objekt nicht die Eigenschaften "before" und "next", die zudem unlogisch sind, denn ein Objekt einer beliebigen Liste hat nun mal keinen einmal definierten und damit festgelegten Vorgänger und Nachfolger, weil durch Einfügen und Löschen diese sich jederzeit ändern können. Also macht es keinen Sinn, die Einträge auf der Objektebene zu definieren. Bei meinen Objekten (Analysenergebnisse von Materialanalysen) klappt diese Vorgehensweise hervorragend. Ich habe nie Probleme mit Zugriffsverletzungen. Und in diesem Fall ist ein Objekt sogar zweischichtig:

Analysengrunddaten (Auftragsnummer, Datum, Messprogramm ...)
Zusammensetzung (Element, Konzentration, Sollwerte, ...)

Die Daten werden aus Datenbanken in die Liste gelesen und dort nach Bearbeitung wieder abgespeichert.

Die Vorgehensweise mit TList solltest Du mal überlegen.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 10.05.13 13:16 
Moin!

user profile iconTranx hat folgendes geschrieben Zum zitierten Posting springen:
Warum verarbeitest Du die Liste nicht in dem Objekt, das dafür zuständig ist: TList.
Weil es u.U. nicht die Aufgabe ist? :nixweiss: Eine TList (und wenn schon, dann für Objekte eine TObjectList :zwinker:) ist nun mal ein Array, eine lineare Liste ist aber konzeptionell etwas ganz anderes. Das sollte man (zumindest für den akademischen Zweck) nicht ausser acht lassen. :idea:


user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
nur ich arbeite auch mit einem Zeiger nach hinten!
Dann such halt nach "doppelt verketteter Liste". ;) Gibt sicher auch was zu. :les:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Blup
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 174
Erhaltene Danke: 43



BeitragVerfasst: Fr 10.05.13 14:28 
Ich hab mal bischen drin rumgedoktert, mit ein par Anmerkungen.
Einloggen, um Attachments anzusehen!
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Sa 11.05.13 16:17 
Danke :)
Es ist natürlich jetzt auch logisch, warum es einen Fehler gibt ! einen zeiger auf einen zeiger ist nicht gut ...

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!