AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Pointer = Fehler beim einlesen einer TXT Datei
Thema durchsuchen
Ansicht
Themen-Optionen

Pointer = Fehler beim einlesen einer TXT Datei

Ein Thema von Cyberbob_at_tot · begonnen am 13. Dez 2004 · letzter Beitrag vom 13. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2      
Cyberbob_at_tot

Registriert seit: 30. Apr 2003
Ort: Ahlen
270 Beiträge
 
Delphi 2006 Professional
 
#1

Pointer = Fehler beim einlesen einer TXT Datei

  Alt 13. Dez 2004, 12:33
Hallo zusammen,
habe ein Testprogramm geschrieben(Einfach DVD Datenbank) in der ich die Datensatz verwaltung mit Pointern regel. läuft auch soweit ganz gut, nur beim Einfügen einer TXT Datei, fügt er mir nach dem Letzten Datensatz noch einen hinzu mit einem Zahl 9688888 oder so! habe das Programm mal hinzugefügt, wer Lust hat und sich mit Pointern dann noch auskennt, kann es sich ja mal ansehen! Ich finde den fehler einfach nicht!

BIG THX

Cyberbob


--- Bei Fragen einfach Posten! Antworte so bald wie möglich ---
Angehängte Dateien
Dateityp: exe dvd_datenbank_dannenberg_v2.0_pointer.exe (60,9 KB, 8x aufgerufen)
-----------------------------------------------------------
The only winning move is not to play ! (Wargames)
-----------------------------------------------------------
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

Re: Pointer = Fehler beim einlesen einer TXT Datei

  Alt 13. Dez 2004, 12:35
Ist das das Programm, oder der Source Code. In der EXE selbst zu suchen ist nicht sinnvoll

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Cyberbob_at_tot

Registriert seit: 30. Apr 2003
Ort: Ahlen
270 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Pointer = Fehler beim einlesen einer TXT Datei

  Alt 13. Dez 2004, 12:43
ist schon der Sourcecode! sonst wäre es ja schwachsinn!

Der fehler ist wohl irgentwo in der Prozedur einlesen oder beim einlesesn der TXT datei zu suchen!
-----------------------------------------------------------
The only winning move is not to play ! (Wargames)
-----------------------------------------------------------
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: Pointer = Fehler beim einlesen einer TXT Datei

  Alt 13. Dez 2004, 12:50
@Sakura: es ist ein selbstextrahierendes rar-Archiv.

[edit]achso...da editiert er doch glatt seinen beitrag...naja, jetzt weiß ich wo ich suchen muss[/edit]

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: Pointer = Fehler beim einlesen einer TXT Datei

  Alt 13. Dez 2004, 13:08
Hi Cyberbob_at_tot,

ich habe mir mal deinen Quellcode angesehen, und ich muss sagen dass ich schockiert bin.

Die Einrückungen sind katastrophal (mal 2 leerzeichen, mal einen tab, mal 5 leerzeichen, mal gar nichts), du verwendest Konstrukte für welche dir jeder halbwegs normale Programmierer den Hals umdrehn würde, z.B.
If aktuell^.next <> nil then begin aktuell:=aktuell^.next; Anzeigen; end; Solcher Code ist unheimlich schwer zu lesen, soviel steht fest.
Nun zum Code der Einlesen-Prozedur:
du rufst bei jedem Leseschritt SetLenght auf. Das ist vollkommen unnötig und frisst nur Speicher. Reservier für das Array 4 Felder, und dann fang an einzulesen.

Weiters macht mich dieser Code ein bisschen stutzig:
Delphi-Quellcode:
new(aktuell);
letzter^.next:=aktuell;
aktuell^.prev:=letzter;
letzter:=aktuell;
aktuell^.next:=nil;
ich war bei verketteten Listen noch nie richtig gut, aber IMHO solltest du wohl zuerst den alten wegsichern:
Delphi-Quellcode:
aktuell^.prev := letzter;
letzter := aktuell;
new(aktuell);
letzer^.next := aktuell;
aktuell^.next := nil;
Zuerst speicherst du im aktuellen Datensatz die Adresse des vorherigen Datensatzes. Dann machst du den derzeit aktuellen zu deinem vorherigen, und anschließend erstellst du ein neues Feld. Dem next-Feld des vorherigen Datensatzes weißt du noch schnell die Adresse des aktuellen Datensatzes zu, und fertig.
Und wenn du jetzt ganz gut nachdenkst, was passiert, sobald du beim nächsten Datensatz bist, sollte das Problem gelöst sein:
Du erstellst ein neues Feld, und fügst es der Liste hinzu, egal ob noch ein Element kommt oder nicht.
Nach der Schleife hast du noch folgenden Code: Aktuell:=Aktuell^.prev; Füg darüber probeweise einfach mal das hier hinzu: Aktuell^.Next := nil; Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Cyberbob_at_tot

Registriert seit: 30. Apr 2003
Ort: Ahlen
270 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Pointer = Fehler beim einlesen einer TXT Datei

  Alt 13. Dez 2004, 13:21
Danke erstmal für die krasse schnelle hilfe, ich schau mir das jetzt mal eben in ruhe an und antworte dann nochmal!

Aber zu der Schreibweise, habe ich so beim BERUFS KOLLEG BECKUM gelernt, also macht mich nicht dafür verantwortlich , werde mich bessern. Ich bin jung und brauch den Quellcode!!!!

(habt ihr mal ein Vernünftigen Quellcode den ich mir mal ansehen kann ?)
-----------------------------------------------------------
The only winning move is not to play ! (Wargames)
-----------------------------------------------------------
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#7

Re: Pointer = Fehler beim einlesen einer TXT Datei

  Alt 13. Dez 2004, 13:24
Zitat von Cyberbob_at_tot:
Danke erstmal für die krasse schnelle hilfe, ich schau mir das jetzt mal eben in ruhe an und antworte dann nochmal!

Aber zu der Schreibweise, habe ich so beim BERUFS KOLLEG BECKUM gelernt, also macht mich nicht dafür verantwortlich , werde mich bessern. Ich bin jung und brauch den Quellcode!!!!

(habt ihr mal ein Vernünftigen Quellcode den ich mir mal ansehen kann ?)
Das sollte dir helfen : http://www.delphi-source.de/grundlagen/styleguide/ (Der Styleguide in Deutsch für Delphi)
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Cyberbob_at_tot

Registriert seit: 30. Apr 2003
Ort: Ahlen
270 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Pointer = Fehler beim einlesen einer TXT Datei

  Alt 13. Dez 2004, 13:51
Zitat:
Weiters macht mich dieser Code ein bisschen stutzig:
Delphi-Quellcode:
new(aktuell);
letzter^.next:=aktuell;
aktuell^.prev:=letzter;
letzter:=aktuell;
aktuell^.next:=nil;
So wie ich das verstanden habe läuft das so...Erzeugen eines neuen Pointers, nun noch dem nach dem Letzten den Aktuellen zuordnen. Der Letzte wird nun zum Vorletzte und zum Schluss ist der Letzte der Aktuelle. Ich sehe da keinen Fehler!

Zitat:
ich war bei verketteten Listen noch nie richtig gut, aber IMHO solltest du wohl zuerst den alten wegsichern:
Delphi-Quellcode:
aktuell^.prev := letzter;
letzter := aktuell;
new(aktuell);
letzer^.next := aktuell;
aktuell^.next := nil;
Habe ich nun mal so eingeben, nun bekomme ich nur den falschen Eintrag zu sehen. Zumindest haben wir schonmal das Problem isoliert , Pointer ist einfach nicht mein Fall! aber wenn es die Schule so will naja!

Zitat:
Nach der Schleife hast du noch folgenden Code: Aktuell:=Aktuell^.prev; Füg darüber probeweise einfach mal das hier hinzu: Aktuell^.Next := nil;
Das war eigenst nur dazu gedacht, den letzten Eintrag mit der krassen Zahl auszublenden. mehr sollte es nicht sein! daher kann man den Code einfach mal links liegen lassen!


@jim_raynor
Danke für den Styleguide, muß ich mir dann bei gelegenheit mal ansehen!
-----------------------------------------------------------
The only winning move is not to play ! (Wargames)
-----------------------------------------------------------
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: Pointer = Fehler beim einlesen einer TXT Datei

  Alt 13. Dez 2004, 13:54
Hallo Cyberbob_at_tot,

egal wozu die Zeile drinwar, die Zeile die du hinzufügen solltest dürfte dein Problem lösen.
In den Funktionen für weiter etc. Prüfst du, ob das nächste Element nil ist. So wie du die Elemente erstellst wird immer ein Element zu viel in der Liste sein, und indem du dem vorletzten Element sagst, dass es kein nächstes gibt, wird das Anzeigen des Elements mit der "komischen" Zahl verhindert. IMHO solltest du aber den Code umbauen, um zu verhindern dass das letzte Element erstellt wird, obwohl es nicht benötigt wird.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#10

Re: Pointer = Fehler beim einlesen einer TXT Datei

  Alt 13. Dez 2004, 14:35
Noch ne kleine Schönheitskorrektur (sinnvoll oder nicht lass ich mal dahingestellt).

Bei Aktuell^.Next kann man sich das ^ sparen. Wenn du mit den Punkt-Operator auf einen Pointer gehst, wird autmoatisch dereferenziert.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:37 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