AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fehler nach freigeben von DLL
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler nach freigeben von DLL

Ein Thema von gsh · begonnen am 23. Apr 2007 · letzter Beitrag vom 30. Apr 2007
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#21

Re: Fehler nach freigeben von DLL

  Alt 30. Apr 2007, 09:25
Zitat von hoika:
Ein ReAlloc erzeugt unter Umständen einen neuen Pointer
und der alte wird nicht mehr verwendet.
Vielleicht solltest du bei der Übergabe ein Pointer auf einen PChar
nehmen statt das PChar selber.
Ich übergebe ein Array von PChar als Paremter und die Anwendung muss dann die Daten aus dem Array auslesen können. (was es auch kann) also kann es ja gar nicht sein das ein neuer pointer erstellet wird da ja die Exe mit dem "alten" immernoch auf die daten zugreifen kann
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#22

Re: Fehler nach freigeben von DLL

  Alt 30. Apr 2007, 10:29
Ja,

das ist eben verwunderlich.
Probier doch mal das SetLength mit "grossem Wert"
mal aus, dann hast du zumindestens ne Notlösung.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#23

Re: Fehler nach freigeben von DLL

  Alt 30. Apr 2007, 10:50
ja mit dieser lösung funktioniert es zwar ... aber damit geb ich mich nicht zufrieden ...

ich hab jetzt außerdem endeckt des es egal ist ob ich die DLL freigebe und wieder lade und wieder freigeben ...

Das Programm bringt nur den Fehler wenn:
-In der DLL die Größe (mit SetLength) vom DatenArray verändert wird.
-Die Dll irgendwann mal freigegeben wird.
-Das Programm beendet wird (erst wenn der Ausführungspunkt hinter dem Appliacation.Run; ist tritt der Fehler auf)

Wenn eins davon fehlt dann tritt der Fehler nicht auf

Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#24

Re: Fehler nach freigeben von DLL

  Alt 30. Apr 2007, 10:55
Hallo,

was passiert, wenn du nach Benutzung der Daten
ein SetLength(0) machst, also die Sache zurücksetzt ?


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#25

Re: Fehler nach freigeben von DLL

  Alt 30. Apr 2007, 11:05
Cool jetzt kommt der Fehler nicht mehr

So jetzt ist nur noch die Frage warum
Kann es daran liegen?:
Delphi-Quellcode:
  MySQL_myRow := mysql_fetch_row(MySQL_myRes);
  SetLength(DataArray^, mysql_num_fields(MySQL_myRes));
  for I := 0 to Length(DataArray^)-1 do
  begin
    DataArray^[I] := MySQL_myRow[I]; //<-- hier
  end;
//edit: aja des ist der Code in der DLL
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#26

Re: Fehler nach freigeben von DLL

  Alt 30. Apr 2007, 13:14
Hallo,

nein *hoff*

Hast du den Coe mal mit memproof geprüft ?
Es kann sein, dass das SetLength(0) ein mem leak erzeugt.

Das SetLength in der DLL biegt bestimmt den Zeiger um (ReAlloc),
das SetLength(0) sorgt dafür, dass ein Free nichts mehr machen muss.

Ansonsten: Problem #12345 gelöst, weiter zu Problem #12346 ...


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#27

Re: Fehler nach freigeben von DLL

  Alt 30. Apr 2007, 13:24
Zitat von hoika:
Hast du den Coe mal mit memproof geprüft ?
Es kann sein, dass das SetLength(0) ein mem leak erzeugt.
nein aber mit ReportMemoryLeaksOnShutdown:=true; und der meckert a mal nicht
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 12:20 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