Deutsch
Forum

Lokales Dim in Prozedur mit Endproc automatisch disposed?

 
Diese Proc...
KompilierenMarkierenSeparieren
Proc XSciProf.GetLine$

    Parameters Nr%
    Declare Len%, Zeile#
    Dim Zeile#,32767
    Len% = .SciMessage(~SCI_GETLINE, Nr%, Zeile#)
    Return Translate$(Char$(Zeile#,0,Len%-1),"	",Space$(XSciProf.Tab%))

EndProc

...gab mir etwas zu denken zumal Roland sie vielleicht in der Hand hatte.

Natürlich bemängelt xpse das hier ein dispose fehlt. Hat er nun recht oder nicht?
 
23.08.2006  
 




Jac
de
Lad
Hm, eine sehr interessante Frage! Ich Dispose immer, bevor ich eine Proc verlasse, es gibt ja auch nirgendwo einen Hinweis, dass automatisch disposed wird!

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
23.08.2006  
 



Der Speicher wird nicht automatisch Disposed, aber die Bereichsvariable wird wohl ungültig, so das der reservierte Speicher irgendwann mal von Windows (ab W2K) freigegeben wird. Bei Win9x kann sowas böse folgen haben, wenn die Proc öfter aufgerufen wird
 
23.08.2006  
 




RGH
Ja, es wäre geschickter die Prozedur so zu schreiben:
KompilierenMarkierenSeparieren
!

Proc Xsciprof.getline$

    Parameters Nr%, Zeile$
    Declare Len%, Zeile#
    Dim Zeile#,32767
    Len% = .Scimessage(~Sci_getline, Nr%, Zeile#)
    Zeile$ = Translate$(Char$(Zeile#,0,Len%-1),"	",Space$(Xsciprof.tab%))
    Dispose Zeile#
    Return Zeile$

Endproc


Gruß
Roland
(baut das noch in Version 0.91 von XProfed ein)
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
23.08.2006  
 




Jörg
Sellmeyer
Oder mit einer Stringvariablen:
KompilierenMarkierenSeparieren
Proc Xsciprof.getline$

    Parameters Nr%, Zeile$
    Declare Len%, Z$
    Z$ = MkStr$("z",32767)
    Len% = .Scimessage(~Sci_getline, Nr%, Addr(Z$))
    Return  Translate$(Left$(Z$,Len%-1),"	",Space$(Xsciprof.tab%))

Endproc


@TS-Soft:Na klar, meinte ich auch!
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
23.08.2006  
 



@Jörg
Wenn ich mich nicht täusche, wirste aber dann Z$ als Addr(Z$) übergeben müssen
 
23.08.2006  
 




Jörg
Sellmeyer
Hier tritt es nochmal auf (XPrfEditClass.prf):
KompilierenMarkierenSeparieren
Proc XSciProf.GetWord

    Declare Wort$, Wort#, pos&, wStart&, wEnde&
    pos&  = .SciMessage(~SCI_GETCURRENTPOS,0,0)
    wStart& = .SciMessage(~SCI_WordStartPosition, pos&, 1)
    wEnde&  = .SciMessage(~SCI_WordEndPosition, pos&, 1)
    Dim Wort#,wEnde& - wStart& + 1
    .SciMessage(~SCI_SetSelectionStart,wStart&,0)
    .SciMessage(~SCI_SetSelectionEnd,  wEnde&, 0)
    .SciMessage(~SCI_GetSelText, 0, Wort#)
    Wort$ = String$(Wort#,0)
    Return Wort$

EndProc

 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
23.08.2006  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.684 Betrachtungen

Unbenanntvor 0 min.
rquindt11.05.2018
Joerg27.06.2016

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie