Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Variablen werden überschrieben!? (https://www.delphipraxis.net/171967-variablen-werden-ueberschrieben.html)

-187- 5. Dez 2012 00:26

AW: Variablen werden überschrieben!?
 
ShowMessage() liefert den selben Wert.

-187- 5. Dez 2012 00:47

AW: Variablen werden überschrieben!?
 
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? :roll:

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

Blup 5. Dez 2012 08:26

AW: Variablen werden überschrieben!?
 
An welcher Stelle wird der Speicher für "PersFB" angefordert und erforderlichenfalls initialisiert, an welcher Stelle wieder freigegeben?

DeddyH 5. Dez 2012 08:37

AW: Variablen werden überschrieben!?
 
Zitat:

Zitat von Popov (Beitrag 1194354)
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.

Popov 5. Dez 2012 09:41

AW: Variablen werden überschrieben!?
 
Zitat:

Zitat von DeddyH (Beitrag 1194386)
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 ;)

-187- 5. Dez 2012 10:09

AW: Variablen werden überschrieben!?
 
Zitat:

Zitat von Blup (Beitrag 1194383)
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:

Delphi-Quellcode:
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;

Popov 5. Dez 2012 10:24

AW: Variablen werden überschrieben!?
 
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.

DeddyH 5. Dez 2012 10:59

AW: Variablen werden überschrieben!?
 
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?

-187- 5. Dez 2012 12:16

AW: Variablen werden überschrieben!?
 
Zitat:

Zitat von Popov (Beitrag 1194394)
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.


Zitat:

Zitat von DeddyH (Beitrag 1194407)
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.

-187- 5. Dez 2012 14:23

AW: Variablen werden überschrieben!?
 
Liste der Anhänge anzeigen (Anzahl: 1)
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?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:50 Uhr.
Seite 3 von 4     123 4      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz