Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Call Stack

Postades av 2003-08-01 10:20:55 - Anders Eidergard, i forum visual basic - allmänt, Tråden har 3 Kommentarer och lästs av 402 personer

Har ett problem, jag vill komma åt VB's Call Stack (precis som man gör när man debuggar i IDE:t (med CTRL-L) ). Alltså en lista med vilka procedurer som anropats inklusive den senaste.

Har letat febrilt på nätet men inte hittat nåt vettigt, det enda som dök upp var ett API som inte gav så mycket mer egentligen.

<code>
Private Declare Function StackWalk Lib _
"dbghelp" (ByVal MachineType As _
Long, ByVal hProcess As Long, _
ByVal hThread As Long, ByRef _
StackFrame As StackFrame, ByVal _
ContextRecord As Long, ByVal _
ReadMemoryRoutine As Long, ByVal _
FunctionTableAccessRoutine As Long, _
ByVal GetModuleBaseRoutine As Long, _
ByVal TranslateAddress As Long) As Long
</code>

Är det någon som vet nåt mer om detta skulle det uppskattas väldeligen.

/Egget




Svara

Sv: Call Stack

Postades av 2003-08-01 12:45:01 - Andreas Hillqvist

Varför gör du bara inte en egen stack?

<code>
Private Sub Form_Load()
Const ProcedureName = "Form_Load"
Const Stack = ProcedureName

Call DoStuff(Stack)

End Sub

Public Sub DoStuff(ByVal ParentStack As String)
Const ProcedureName = "DoStuff"
Dim Stack As String
Stack = ParentStack & "/" & ProcedureName

MakeMyDay Stack

End Sub

Public Sub MakeMyDay(ByVal ParentStack As String)
Const ProcedureName = "MakeMyDay"
Dim Stack As String
Stack = ParentStack & "/" & ProcedureName

End Sub
</code>

Eller vad är det behov av att känna till stacken?

Om du ska ha den vid felhantering kan du göra så här:
<code>
Private Sub Form_Load()
On Error GoTo ErrProc

Randomize
If Int(rnd*3) = 1 Then Err.Raise vbObjectError, "Test", "Slumpfel 1"

Call DoStuff()

Exit Sub

ErrProc:
MsgBox "Error: " & Err.Description, TypeName(Me) & ".Form_Load()/" & Err.Source

End Sub

Public Sub DoStuff()
On Error GoTo ErrProc

If Int(rnd*3) = 1 Then Err.Raise vbObjectError, "Test", "Slumpfel 2"

MakeMyDay

Exit Sub

ErrProc:
Err.Raise Err.Number, "DoStuff()/" & Err.Source, Err.Description, Err.HelpFile, Err.HelpContext

End Sub

Public Sub MakeMyDay()
On Error GoTo ErrProc

If Int(rnd*3) = 1 Then Err.Raise vbObjectError, "Test", "Slumpfel 3"

Exit Sub

ErrProc:
Err.Raise Err.Number, "MakeMyDay()/" & Err.Source, Err.Description, Err.HelpFile, Err.HelpContext
End Sub
</code>

Vilket oxå är ett mer korrekt sätt att hantera fel.


Svara

Sv: Call Stack

Postades av 2003-08-01 14:07:39 - Anders Eidergard

Klart jag kan göra en egen stack, men jag har en förbannad massa procedurer att gå igenom och ändra i om jag ska producera fram en egen.

Jag ska ha det till centraliserad felhantering. Själva grejen var att jag inte vill skriva in namnet på varje procedur i felhanteringskoden.
Fast en liten hjälp är nog om jag kan ta reda på vilken procedur jag befinner mig i för närvarande, kodmässigt alltså.

Alltså <code>TypeName(Me)</code> fast för procedurer istället.

/Egget


Svara

Sv: Call Stack

Postades av 2003-08-01 15:32:07 - Andreas Hillqvist

Centraliserad felhantering innebär inte att det är bra felhanteringen. Du bör skicka felet vidare i din proceduerer så var och en av dem kan ta hand om det o sedan skicka det vidare. Detta är bra felhantering.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 165
27 952
271 704
1 347
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies