AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dll Problem

Offene Frage von "mr.unbekannt"
Ein Thema von mr.unbekannt · begonnen am 19. Jun 2007 · letzter Beitrag vom 22. Jun 2007
Antwort Antwort
Seite 2 von 3     12 3      
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#11

Re: Dll Problem

  Alt 21. Jun 2007, 19:01
Geh weg mit Luckis Anleitung damit kannste Anfänger behängen. Stimmt schon das das Falsch war,
natürlich sollte man sich vor ne Speicher beantragen "GetMem" und dann das ganze übergeben.
Das Problem ist nemlich das
1. Man darauf achten muss das man keine Dyn. Speicher bereiche Übergibt.
2. Speicher übergibt der nicht schon wieder freigeben wurden ist.

Im klar text jede Seite muss den Speicher erreichen und muss auch wiessen wie groß der Bereich ist.

Der Fehler hat sich in der Eile eingeschlichen und dann hatte ich schon lange nicht mehr mit einer DLL gearbeitet.
Programmieren ..... .
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#12

Re: Dll Problem

  Alt 21. Jun 2007, 19:42
@nitschchedu: nachdem du deine Kenntnisse in der Sprache Deutsch aufgebessert hast, darfst du dich gerne nochmal mit den Grundlagen der Sprache Pascal beschäftigen
(wer nämlich mit mit h schreibt ist dämlich [und wer es auch noch mit e schreibt ist ... ])
  Mit Zitat antworten Zitat
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#13

Re: Dll Problem

  Alt 21. Jun 2007, 20:22
So biste zufrieden !!! ? Fühlste dich jetzt besser das du jemanden gezeigt hast der LRS hat und der ganz schnell Posten wollte wie man Deutsch schreibt ? Jetzt weiß ich wieder warum ich es hier vermeide leuten zuhelfen.
Programmieren ..... .
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Dll Problem

  Alt 21. Jun 2007, 21:18
es geht eigentlich darum das du die ShareMem schlecht gemacht hast (was ja generell nicht falsch ist sondern eben Ansichtssache) aber deine Begründung dann total daneben ging. Denn deine Alternative zur ShareMem war Fehlerhaft und nicht brauchbar.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#15

Re: Dll Problem

  Alt 21. Jun 2007, 21:40
Das ich von ShareMem nichts halte ist eine Sache. Aber da ich versucht habe zuhelfen und dann mir gegen über sich auch noch im Ton vergriefen würd, finde ich zum Kotzen. Desweiteren auch die Leute die mehr Wiessen und dann so herrablassend zu einen sind. (Dies ist mir im Forum ihr schon mehrmals aufgefallen.)

Übrigens ist das hier auch Murks:
Zitat:
Du gibst als Result einen PChar zurück. Diesen erhälst du aus einer temporären Umwandlung eines Strings. Der String wiederrum ist eine lokale Variable und verliert somit ihre Gültigkeit mit verlassen der Procedure.
Der String wurde in den Result Speicher geladen, das bedeudet das PChar keine Verbindung mit String mehr hat.
Nun kann der String freigeben werden wie er will. Der Result Speicher ist dann drotzdem noch da und immer noch der Selber.
Und der Resultspeicher würd erst freigeben wenn das Programm ein Befehlsatzt weiter ist als der Aufruf der funktion.

Desweiteren kann man das ganze noch sichern in dem man die funktion in eine Klasse legt und die Klasse zurückgibt oder eben GetMem nihmt.
Programmieren ..... .
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Dll Problem

  Alt 21. Jun 2007, 22:03
Zitat von nitschchedu:
Geh weg mit Luckis Anleitung damit kannste Anfänger behängen.
Bitte was? Kannst du die Aussage mal begründen, warum meine Lösung angeblich nur was für Anfänger sei?


Zitat von nitschchedu:
Aber da ich versucht habe zuhelfen und dann mir gegen über sich auch noch im Ton vergriefen würd, finde ich zum Kotzen.
Motzi hat es etwas blumig ausgedrück, in dem er das Wort "murks" benutzt hat, er hätte auch einfach "schlecht" sagen können. Meiner Meinung nach hat sich hier niemand dir gegenüber im Ton vergriffen. Einzig du hast überreagiert. Und dass du meinen Artikel als Anleitung für Anfänger abtust, ohne Begründung oder einen Vorschlag, wie es besser geht, finde ich auch nicht sehr gut.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#17

Re: Dll Problem

  Alt 21. Jun 2007, 22:42
Zitat von nitschchedu:
... und dann mir gegen über sich auch noch im Ton vergriefen würd, finde ich zum Kotzen. Desweiteren auch die Leute die mehr Wiessen und dann so herrablassend zu einen sind.
Ich hatte es nicht so dramatisch gemeint, aber warum ich es so bezeichnet habe (weil als Lösung gegenüber ShareMem angepriesen, aber komplett nicht nutzbar) wurde schon geschrieben. Herablassend oder beleidigen wollte ich trotzdem keinen, schliesslich geht es hier um das Programmieren und somit um Lösungen, u.a. in Codeform. Dazu will ich beitragen und keinen direkt ansprechen.

Auch weiss ich schon länger, dass du LRS hast und habe auch nie etwas dazu geschrieben und nehme darauf genauso Rücksicht. Genauso wenig will ich herablassend wirken. Und das ich mehr Wissen haben sollte, würde ich niemals behaupten und da ich deins nicht kenne, würde ich sowas nicht schreiben (siehe meine Signatur).

Zitat von nitschchedu:
Übrigens ist das hier auch Murks:
Zitat:
Du gibst als Result einen PChar zurück. Diesen erhälst du aus einer temporären Umwandlung eines Strings. Der String wiederrum ist eine lokale Variable und verliert somit ihre Gültigkeit mit verlassen der Procedure.
Der String wurde in den Result Speicher geladen, das bedeudet das PChar keine Verbindung mit String mehr hat.
Nun kann der String freigeben werden wie er will. Der Result Speicher ist dann drotzdem noch da und immer noch der Selber.
Und der Resultspeicher würd erst freigeben wenn das Programm ein Befehlsatzt weiter ist als der Aufruf der funktion.
Der temporäre Typecast von dem String auf einen PChar macht nur folgendes:

-> Überprüfen das der String nicht leer ist und wenn nicht, einfach die Adresse des AnsiStrings für den PChar zurück geben (siehe LStrToPChar) - ansonsten gibt er die Adresse eines bei ihm fest abgelegten Nullbytes zurück.

Dann ist Ende der Procedure und er räumt den AnsiString ab. Sprich: er fügt eine Null bei der Länge ein und dekrementiert den Reference Counter (siehe LStrClr). Sonst passiert nichts weiter, es wird nichts kopiert und gar nichts. Von daher gibt es keinen "Result Speicher" - der PChar ist dann genauso tot wie der String.

Zitat von nitschchedu:
Desweiteren kann man das ganze noch sichern in dem man die funktion in eine Klasse legt und die Klasse zurückgibt oder eben GetMem nihmt.
Die Klasse zurück geben? Du sagst selber, dass du kein ShareMem benutzt. Du sagst dann auch, dass dann keine Speicherbereiche (dynamischen) übertragen/übergeben werden sollen. Die Klasseninstanz liegt in genau einem solchen Speicher und ist davon genauso betroffen wie alles andere was du angemerkt hattest. Ausserdem ist die Frage der Typen bei der DLL und Delphi. Dies ist leider nicht so einfach und schön möglich wie bei C++.

Und GetMem() in der DLL? Und dann in der App freigeben? Dies würde nicht hinhauen, da es unterschiedliche Speicherverwalter sind (siehe Luckie's "Anfänger Tutorial"). Und wenn du das FreeMem() zum GetMem() in die DLL holst: Wann willst du denn FreeMem() aufrufen? Wann weisst du, dass die App den Speicher nicht braucht? Willst du dir eine immer länger werdende Liste in der DLL halten mit Speicher zum freigeben den du beim entladen der DLL freigegeben willst?

Bitte erkläre das nochmal genauer.

Zitat von Luckie:
Motzi hat es etwas blumig ausgedrück, in dem er das Wort "murks" benutzt hat, er hätte auch einfach "schlecht" sagen können.
Ich weiß, dass du mich nicht magst, aber das du mich bisher wirklich jedesmal anders nennst, nur nicht bei meinem Nicknamen, fällt so langsam auf - oder sollte das "Motzi" eine Wertung mit beinhalten?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#18

Re: Dll Problem

  Alt 21. Jun 2007, 23:45
Ach mist, ich habe dich verwechselt. Ich meinte natürlich Muetze1. Und was heißt ich dich nicht mögen? Du bist mein Lieblings-DP-Mitglied.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
nitschchedu

Registriert seit: 24. Mär 2006
300 Beiträge
 
Delphi 7 Professional
 
#19

Re: Dll Problem

  Alt 22. Jun 2007, 16:04
Der Rechtschreibevorwurf ging an brechi !
So Anleitungen sind für Leute die es noch nicht wiessen (über das Thema) und es nun wiessen wollen.
Getest habe ich vieles und auch Überprüft mit deiner Anleitung (Die mal vor 2 Jahren in der Hand hatte) aber auch mit anderen.

Mutze1 würde ich es vorschlagen das er es mal Test und dann sich wundern Darf warum der Speicher nicht Frei ist auch wenn er den String Freigibt vor der Übergabe .

Des weiteren werde ich zu den Thema nix mehr sagen.
Programmieren ..... .
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#20

Re: Dll Problem

  Alt 22. Jun 2007, 16:11
Zitat von nitschchedu:
Mutze1 würde ich es vorschlagen das er es mal Test und dann sich wundern Darf warum der Speicher nicht Frei ist auch wenn er den String Freigibt vor der Übergabe .
Habe ich getan, auf der Basis mit daneben laufendem Delphi mit einem Testprojekt ist der Beitrag entstanden...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 11:29 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