Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Aus DLL auf Prgramm zugreifen (https://www.delphipraxis.net/28662-aus-dll-auf-prgramm-zugreifen.html)

F.W. 2. Okt 2004 20:38

Re: Aus DLL auf Prgramm zugreifen
 
Einen weiteren Fehler habe ich inzwischen gefunden:

Delphi-Quellcode:
procedure GetMsg(RE: TRichEdit; MainForm: TForm; St: TStream);
 { ... }
if Kennung = 'T' then begin
    St.ReadBuffer(I, SizeOf(I));
[color=#ff0000]   SetLength(S, I);[/color]
    St.ReadBuffer(S[1], I);
    RE.Lines.Add(S);
    Melden(MainForm);

 { ... }
Allerdings, weil ich die hier ausgeführten Zeilen ins Programm geschrieben habe. Dort funktioniert es zwar, nütz mir aber nichts!

Armageddon 31. Dez 2004 10:41

Re: Aus DLL auf Prgramm zugreifen
 
Hallo,

ich habe heute mal das Beispiel von Assarbad genommen weil ich genau so einen Fall habe. Nur leider bringt er mir bei compilieren der Dll den Fehler das TEdit ein undefinierter Bezeichner ist. BeimRichEdite genau dasselbe. Hab ich was in der Uses vergessen oder an was könnt das liegen?

Gruß Arma

F.W. 31. Dez 2004 12:49

Re: Aus DLL auf Prgramm zugreifen
 
Jepp, du hast bestimmt in der Uses-Liste die Units der beiden Compos vergessen!

TEdit >> StdCtrls
TRichEdit >> ComCtrls

Armageddon 31. Dez 2004 16:17

Re: Aus DLL auf Prgramm zugreifen
 
Danke F.W.

genau das war's hab es vorhin selbst bemerkt. Trotzdem Danke. :-)

F.W. 22. Okt 2006 02:28

Re: Aus DLL auf Prgramm zugreifen
 
Guten morgen alle Früh-aufsteher :D oder Spät-ins-Bett-geher :D

Ich hätte nicht geglaubt, dass ich zu meinem heutigen Problem was in der Suche finde (ich tu mich irgendwie mit der Bezeichnung meiner Probleme schwer, oder mit den Schlagworten in der Suche). Aber ich hab was gefunden, und nicht irgendeinen Beitrag, sondern gerade auch noch einen von mir selbst :D

Problem: In diesem Posting bin ich speziell über folgende Zeilen gestolpert:
Delphi-Quellcode:
procedure GetMsg(RE: TRichEdit; MainForm: TForm; St: TStream);
 { ... }
 St.Seek(0, soFromBeginning); //<- Die Zeile macht er immer ohne Probleme
 St.ReadBuffer(Kennung, 1); //<- Diese Zeile macht er nicht mehr, aber er zeigt keinen Fehler an!
Das ist die Stelle mit der ich mein jetziges Problem mit diesem Thread verbinde! Bloß dass der Dll jetzt mal keine Beachtung geschenkt werden soll.

Ich arbeite in einer Procedure mit einem TFileStream. Zwischendurch soll ein Position in ihm gesucht werden, da das auch an anderen Stellen des Programms geschieht, ist der Teil in einer Funktion ausgelagert, dem der Stream als Parameter übergeben wird.
Nach dem Aufruf der Funktion ist mein Stream aber weg oder was auch immer ??

Mal Stückchen Quellcode:
Delphi-Quellcode:
//soviel zum Aufruf:
var
 FS: TFileStream;
begin
   if GetStartDataPosition(FS) = -1 then begin

//...


//das ist die aufgerufene Funktion:
function TMainForm.GetStartDataPosition(S: TFileStream): Integer;
var
 Buffer: String;
begin
 Result := -1;

//schauen ob [ENDE] als letztes im Stream steht
 S.Seek(-Length(EndString), soFromEnd);
 SetLength(Buffer, Length(EndString));
 S.ReadBuffer(Buffer, Length(EndString));// << böse Stelle <<

 // ...
end;
Ich habe mal etwas probiert:
Wenn in der Funktion nur S.Seek drinsteht, geht nachher noch alles.
Sobald ich aber S.ReadBuffer ausführe kann ich mit FS (von oben, in der aufrufenden Procedure) nicht mehr weiterarbeiten. Das lustige dabei ist aber, innerhalb von GetStartDataPosition kann ich nach S.ReadBuffer noch arbeiten

Kann mir das jemand erklären warum das so ist und was man dagegen machen kann?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 Uhr.
Seite 3 von 3     123   

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