AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Variablen werden überschrieben!?
Thema durchsuchen
Ansicht
Themen-Optionen

Variablen werden überschrieben!?

Ein Thema von -187- · begonnen am 4. Dez 2012 · letzter Beitrag vom 7. Dez 2012
Antwort Antwort
Seite 3 von 4     123 4      
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#21

AW: Variablen werden überschrieben!?

  Alt 5. Dez 2012, 00:26
ShowMessage() liefert den selben Wert.
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#22

AW: Variablen werden überschrieben!?

  Alt 5. Dez 2012, 00:47
Sobald die Funktion NextPrevRecord durchgelaufen ist, enthält PersFB keinen Wert mehr. Allerdings ist der Wert vor dem letzten end der Funktion noch verfügbar, jedoch im begin Teil der while- Schleife nicht mehr. Woran kann das liegen?

Ich hab mal ein kleines Video gemacht weil's schwierig zu erklären wäre: (Leider ist die Qualität nicht so gut aber man kann es erkennen.)

http://videobam.com/EiILf

Geändert von -187- ( 5. Dez 2012 um 00:49 Uhr)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#23

AW: Variablen werden überschrieben!?

  Alt 5. Dez 2012, 08:26
An welcher Stelle wird der Speicher für "PersFB" angefordert und erforderlichenfalls initialisiert, an welcher Stelle wieder freigegeben?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: Variablen werden überschrieben!?

  Alt 5. Dez 2012, 08:37
Ob man es prüft oder nicht ist so eine Sache. In Visual Basic hat man es geprüft. Ich bin von VB Programmieren ständig drauf hinweisen, dass ich da was vergessen habe. Wenn es in einer Sprache üblich ist, kann es in einer anderen nicht falsch sein, höchstens unnötig.
Um das nicht so stehen zu lassen (obwohl auch im Thread schon mehrfach darauf hingewiesen wurde): http://www.delphi-treff.de/tutorials...faengerfehler/
Zum Thema: da scheint es einen wilden Zeiger zu geben, siehe Blups Frage. Außer in der Assigned-Abfrage habe ich persönlich nichts von PersFB zu Gesicht bekommen, das erscheint mir komisch.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#25

AW: Variablen werden überschrieben!?

  Alt 5. Dez 2012, 09:41
Um das nicht so stehen zu lassen ...
Bevor eine Staatsaffäre draus wird - ich hab selbst geschrieben, dass doppelt gemoppelt unnötig ist. Und was allgemein nicht falsch ist, kann auch nicht in Delphi falsch sein. Aber, andere Regeln, neue Regeln. Wenn bei Delphi direkt mit API arbeitet, dann gelten andere Regeln, nicht nur bei Boolean. Hier verlässt man Delphi und arbeitet mit dem Produkt einer anderen Sprache und das liefert u. U. für Boolean einen anderen Wert. Das muss man wissen. Das macht den Vergleich bei Delphi trotz dem nicht falsch. Wenn man mit Delphifunktionen arbeitet wird es also nie zu einem Problem kommen, bzw. ist es gehopst wie gesprungen. Vielmehr kann ein Vergleich beim Zusammenarbeit mit anderen Sprachen problematisch werden. Somit ist die Formulierung mit Falsch falsch. Es ist empfehlenswert drauf zu verzichten, da man sonst beim Arbeiten z. B. mit API dessen Boolean zuerst konvertieren muss, was sonst nicht nötig ist
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#26

AW: Variablen werden überschrieben!?

  Alt 5. Dez 2012, 10:09
An welcher Stelle wird der Speicher für "PersFB" angefordert und erforderlichenfalls initialisiert, an welcher Stelle wieder freigegeben?

Form.Show() ruft InitDataBase (Funktion) auf. InitDataBase ruft OpenTheFile (Funktion) auf. In OpenTheFile steht:

BTOpenFileBlock (PersFB, FBlock, False, False, False, True); BTOpenFileBlock sieht so aus:

Delphi-Quellcode:
procedure BTOpenFileBlock(var IFBPtr : IsamFileBlockPtr;
                              FName : IsamFileBlockName;
                              ReadOnly,
                              AllReadOnly,
                              Save,
                              Net : Boolean);
Im Form Close wird diese Prozedur aufgerufen:

Delphi-Quellcode:
BTCloseFileBlock(PersFB);



procedure BTCloseFileBlock(var IFBPtr : IsamFileBlockPtr);
  {-Closes a fileblock}
begin
  IsamEntryCode(IFBPtr, NoOptions);
  if IsamOK then
    IsamCloseFileBlock(IFBPtr);
  IsamExitCode(Pointer (NotAFileBlockPtr));
end;

Geändert von -187- ( 5. Dez 2012 um 10:12 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#27

AW: Variablen werden überschrieben!?

  Alt 5. Dez 2012, 10:24
Eine kleine Frage. Vielleicht steht das auch irgendwo und ich habe es nur überlesen. Die Frage ist - funktioniert dein Code nicht so wie du es dir vorstellst oder interessiert es dich nur wieso Next False ist? Denn darauf kann es zwei verschiedenen Antworten geben.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#28

AW: Variablen werden überschrieben!?

  Alt 5. Dez 2012, 10:59
Es scheint, als ob zwischen dem BTOpenFileBlock und dem BTCloseFileBlock der Pointer PersFB bzw. die dahinterstehenden Daten irgendwie verloren geht/gehen. Ein FreeMem oder dergleichen hast Du nicht eingebaut?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#29

AW: Variablen werden überschrieben!?

  Alt 5. Dez 2012, 12:16
Eine kleine Frage. Vielleicht steht das auch irgendwo und ich habe es nur überlesen. Die Frage ist - funktioniert dein Code nicht so wie du es dir vorstellst oder interessiert es dich nur wieso Next False ist? Denn darauf kann es zwei verschiedenen Antworten geben.
Mein Code funktioniert nicht.


Es scheint, als ob zwischen dem BTOpenFileBlock und dem BTCloseFileBlock der Pointer PersFB bzw. die dahinterstehenden Daten irgendwie verloren geht/gehen. Ein FreeMem oder dergleichen hast Du nicht eingebaut?
Nein, hab ich nicht.


Edit: Ich habe in der Doku einen anderen Weg gefunden alle Einträge abzufragen und damit scheint es etwas besser zu klappen. Ich probier erstmal weiter, vielleicht hat sich das Problem hier erledigt.

Geändert von -187- ( 5. Dez 2012 um 12:26 Uhr)
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#30

AW: Variablen werden überschrieben!?

  Alt 5. Dez 2012, 14:23
Ok die anfänglichen Probleme des Zugriffs scheinen fürs Erste überwunden. Jedoch stell ich jetzt fest, dass ich seltsame Zeichen in den Datensätzen habe. Erst dachte ich das Delphi 2010 mit btreefiler nicht klar kommt und hab D7 installiert, jedoch hat das nichts verändert. Im Anhang mal ein Bild aus dem Debug Mode wie ein Datensatz beispielsweise aussieht. Jemand eine Idee?
Miniaturansicht angehängter Grafiken
unbenannt.png  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 02:46 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