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


Exe-filen låser sig

Postades av 2004-08-09 21:03:17 - Kjell Andersson, i forum visual basic - allmänt, Tråden har 21 Kommentarer och lästs av 886 personer

Jag har ett program som vid uppstart läser in några data från en ini-fil. Det går på nolltid i uvecklingsmenyn men när jag kör exefilen tar det 10 sekunder efter uppstart innan det gåt att klicka i menyn. Vad kan det bero på?
De kontroller som är tillagda är CommonDialog samt de referenser som är gjorda är till Data Objects 2.5 Library, Word 9 Object Library samt Scripting Runtime.


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-10 07:15:05 - Johan Olsson

Kör du via API-anrop (GetPrivateProfileString m.fl.) ?

/Johan


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-10 12:11:03 - Kjell Andersson

Nej det finns inga API-anrop i programmet.
Programmet läser in en inifil samt kollar en listbox om det är något i den beroende på vad som läses in från inifilen.


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-10 12:23:54 - Johan Olsson

Är du säker på att det är ini-filen som laggar ?
Inte skapa ett word-objekt eller så ?
Hur läser du annars in filen, Freefile och Open ?

/Johan


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-10 13:09:15 - Kjell Andersson

Open App.Path & "\config.ini" For Input As #1

Det skapas Worddokument men det görs senare, efter det att användarens gjort en sökning och genererat en rapport. Däremot vet jag inte riktigt hur dokumenten skall avslutas för texten kan ligga kvar i Word när jag startar datorn närsta gång. Det finns också fler former i programmet men ingen öppnas förran användaren klickat i en meny. DE avslutas med Unload Me och huvudformuläret även med End men programmet syns ändå i listan när man trycket Ctr-Alt-Del som att det fortfarande ligger laddat.


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-10 13:30:02 - Johan Olsson

Du ska nog undvika End, Unload funkar ju bra (förutsatt att alla frm är stängda).

Att programmet fortfarande är igång tyder på att ett frm fortfarande ligger laddat.
Om du refererar till ett "unloadat" frm så laddas det på nytt tror jag.

Du kan alltid snabbkolla vilka frm som är laddade :
<code>
Dim frmTest as Form

For Each frmTest In Forms
MsgBox frmTest.Caption
Next
</code>


Men ini-filen borde väl inte beröras av det ?
Är du hundra på att det är det som tar tid ?
Testa med ett annat nummer, alternativt kör med en variabel och funktionen FreeFile


EDIT:

Kan du inte posta koden i Form.Load eller motsvarande och deklarationerna ?

/Johan


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-10 21:07:57 - Kjell Andersson

Jag är inte hundra på någonting men även när det bara är inifilen som laddas tar det tid. Alltså att NyLista = False och ForstaGangen = 1 i nedanstående kod. Här är koden för Form Activate



Private Sub Form_Activate()
On Error GoTo fel

frmDatumformat.Option4.Value = True 'Inläsningar av sparade variabler vid programstart

Open App.Path & "\config.ini" For Input As #1
Input #1, LinjeColor
Input #1, HuvudRubrikColor
Input #1, HuvudRubrikTjocklek
Input #1, HuvudRubrikStorlek
Input #1, UnderRubrikColor
Input #1, UnderRubrikTjocklek
Input #1, UnderRubrikStorlek
Input #1, TextColor
Input #1, TextTjocklek
Input #1, TextStorlek
Input #1, NamnTjocklek
Input #1, EfternamnVersal
Input #1, Databas
Input #1, ForstaGangen
Close #1
If ForstaGangen = 1 Then 'Om man starta programmer första gången efter installation
Dim Filnamn As String
Namnge: ' Om man inte namngivet en ny databas utan tryckt Avbryt i InputBoxen
Filnamn = InputBox("Namnge en ny databas!") 'Ge nya databasen ett namn
If Filnamn = "" Then
MsgBox "Du måste ge databasen ett namn!"
GoTo Namnge
End If

FileCopy App.Path & "\data\data.mdb", App.Path & "\data\" & Filnamn & ".mdb" 'Kopiera den förinstallerade databasen data.mdb till det namn som användaren angivet
Kill App.Path & "\data\data.mdb" 'Tar bort den förinstallerade databasen
MsgBox "Importera nu en GEDCOM-fil eller skriv in persondata!"

ForstaGangen = 0
Databas = Filnamn
Open App.Path & "\config.ini" For Output As #1 'Uppdaterar inifilen med nya databasnamnet och att första programstarten gjorts
Print #1, LinjeColor
Print #1, HuvudRubrikColor
Print #1, HuvudRubrikTjocklek
Print #1, HuvudRubrikStorlek
Print #1, UnderRubrikColor
Print #1, UnderRubrikTjocklek
Print #1, UnderRubrikStorlek
Print #1, TextColor
Print #1, TextTjocklek
Print #1, TextStorlek
Print #1, NamnTjocklek
Print #1, EfternamnVersal
Print #1, Databas
Print #1, ForstaGangen
Close #1
Me.Caption = Databas
NyLista = False
MousePointer = vbDefault
Exit Sub
End If

If NyLista = True Then 'Om personlistan skall uppdateras
MousePointer = vbHourglass

Set ConnPerson = New ADODB.Connection

ConnPerson.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & App.Path & "\data\" & Databas & ".mdb;uid=Admin"

SQL = "select * from person order by efternamn, fornamn"

Set rs = ConnPerson.Execute(SQL)
Dim Nollar As String
Do Until rs.EOF 'Skapa personlistan
If rs("fodelsear") = 0 Then
Nollar = ""
Else
Nollar = rs("fodelsear")
End If
Lista.AddItem rs("id") & ":" & vbTab & rs("efternamn") & " " & rs("fornamn") & " f. " & Nollar & " " & rs("fodelseort")
rs.MoveNext
Loop
rs.Close
ConnPerson.Close

Dim text As String
Dim i As Integer

For i = 0 To Lista.ListCount - 1
text = text & Lista.List(i)
Next i
If text = "" Then 'Kollar om några personer finns i personlistan efter uppdatering.
MsgBox "Det finns inga personer i databasen. Importera en GEDCOM-fil"
ImporteraText.Enabled = False 'Sätter menyalternativen
SkapaNyText.Enabled = False
KopplaBild.Enabled = False
Generation.Enabled = False
ImporteraGedcom.Enabled = True

Else
ImporteraText.Enabled = True 'Sätter menyalternativen
SkapaNyText.Enabled = True
KopplaBild.Enabled = True
Generation.Enabled = True
ImporteraGedcom.Enabled = True
Sok.Enabled = True


End If
Gen = False
TextVal = False
BildVal = False
klick = False
OppnaDatabas = False
NyLista = False
MousePointer = vbDefault
Me.Caption = Databas
End If

Exit Sub

fel:
MsgBox Err.Description
MousePointer = vbDefault
End Sub


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-11 08:45:45 - Jenny Månsson

Du ska inte ha denna koden i Form_Activate utan i form_load!

Annars kommer koden att köras så fort fönstret aktiveras varje gång dvs:
- Om du har ett annat fönster aktivt och sedan gör detta fönster aktivt igen
- Om fönstret ligger nere i listen minimerat och du tar upp det igen
- osv....


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-11 08:55:19 - Johan Olsson

Har du testat hur många gånger koden körs ?

Activate körs väl varje gång du byter till formuläret.

Annars ska det väl funka även om jag personligen är allergisk mot goto.
Skulle ha använt While Filnamn=""

Hur stor är data.mdb ? Går det inte snabbare att byta namn på den ?
Name App.Path & "\data\data.mdb" As App.Path & "\data\" & Filnamn & ".mdb"

Hoppas du kommer framåt

/Johan


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-11 10:08:57 - Kjell Andersson

Det är just det som är meningen. När andra fönster stängs så skall detta fönster uppdateras. Finns det listigare sätt att göra detta på?


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-11 10:18:19 - Kjell Andersson

JA GoTo är väl inte så bra men jag tänkte inte på While Filenamn= Det skall jag testa.

data.mdb är152 kb när den är tom och kanske blir 200 kb när den används. Det blir ca 500 poster i den. Jag har prövat med Name men märker inget skillnad men jag kan ändå ändra tillbaka eftersom du säger det är snabbare för alla kanske inte har en snabb dator så det märks hos andra.

Det är nu som att när formen laddats och listan är updaterad och allt är klart så syns timglaset 6-7 sekunder efteråt. Det är inte vid varje programstart utan då och då.


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-11 10:52:29 - Jenny Månsson

Om timglaset syns så länge så kan vi konstatera att det är listningen av personlistan som tar lång tid eftersom det är där timglaset används.

<code>SQL = "select * from person order by efternamn, fornamn" </code>
behöver du verkligen hämta alla fält här? Det ser ju ut som om du endast listar id, eftrernamn förnamn, födelseort och gör en kontroll på födelseår. Det är prestandakrävande i databasen att hämta alla fält i onödan. Även om du behöver alla fält är det bättre att faktiskt skriva alla fält istället för stjärna *. Har du många fält i tabellen? Det är kanske för många fält och de har kanske dessutom för stora storlekar och kanske även fel datatyp. Det är viktigt att kontrollera.

<code>
Set rsLista.AddItem rs("id") & ":" & vbTab & rs("efternamn") & " " & rs("fornamn") & " f. " & Nollar & " " & rs("fodelseort") </code>
är mer prestandakrävande än
<code>
Set rsLista.AddItem rs!id & ":" & vbTab & rs!efternamn & " " & rs!fornamn & " f. " & Nollar & " " & rs!fodelseort </code>
Detta är mycket bättre. Likadant i din if sats där du kontrollerar födelseår


Här är det dumt att loopa en gång till.
<code>
For i = 0 To Lista.ListCount - 1
text = text & Lista.List(i)
Next i
</code>
Istället när du lägger till i din lista så gör så här
<code>
stringVariabel = rs!id & ":" & vbTab & rs!efternamn & " " & rs!fornamn & " f. " & Nollar & " " & rs!fodelseort
Set rsLista.AddItem stringVariabel
text = text & stringVariabel
</code>
så kan du ta bort loopen.



Svara

Sv: Exe-filen låser sig

Postades av 2004-08-11 10:59:12 - Jenny Månsson

Föresten vad ska du med variabeln text till? Ska du bara kontrollera om listan innehåller några personer?

Då är det rätt onödigt att loopa igenom listan för att lägga till dem i text variabeln du kollar istället
if Lista.listcount <> 0 then


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-11 11:06:28 - Johan Olsson

Men problemet uppstår även då listan inte fylls ?
"Alltså att NyLista = False och ForstaGangen = 1"

Timglaset kan väl ha andra anledningar ?

Håller med om det du skriver iofs !

/Johan


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-11 12:52:14 - Kjell Andersson

Ja problemet uppstår även då listan inte fylls och inget timglas visas. Även när listan fylls så är det ju långt efter det är klart som timglaset visas. Kan det ändå ha med SQL att göra?

Jenny, jag skall titta noga på dina förslag och testa att ta bort Loopar och variabler. Jag behöver som då påpekar inte selektera alla fält. Tur det finns profs att fråga:)


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-11 13:12:09 - Kjell Andersson

När jag skriver
Set rsLista.AddItem rs!id & ":" & vbTab & rs!efternamn & " " & rs!fornamn & " f. " & Nollar & " " & rs!fodelseort

får jag felmeddelande på första rs om "Expected ="


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-11 13:17:48 - Jenny Månsson

Är du säker på att det är på den raden du får meddelande?
Testa att först lägga in i en strängvariabel innan du gör additem

stringVariabel = rs!id & ":" & vbTab & rs!efternamn & " " & rs!fornamn & " f. " & Nollar & " " & rs!fodelseort
rsLista.additem stringVariabel

behöver inte skriva set framför


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-11 20:06:05 - Kjell Andersson

Detta funkar

stringVariabel = rs!id & ":" & vbTab & rs!efternamn & " " & rs!fornamn & " f. " & Nollar & " " & rs!fodelseort
rsLista.additem stringVariabel


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-12 00:21:24 - Kjell Andersson

Nu har jag gjort alla föreslagna ändringar men det är ingen skillnad. I utvecklingsmiljön flyter det på "blixtsnabbt" men när jag gör en exe-fil så låser sig fönstret en längre tid. Mycket irriterande när programmet är klart för övrigt och så här vill ju ingen använda det.


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-12 08:59:50 - Jenny Månsson

Testa att lägga in en doevents efter första
<code>
Close #1
DoEvents
</code>

så att du säkert vet att operativsystemet hinner släppa filen innan du ska öppna den igen för redigering.

Blir det inte bättre så kan du lite här och där lägga in lite msgbox där du talar om exakt i koden var du är så att du ser hur långt du hinner innan det hänger sig.


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-12 10:22:25 - Sven Åke Persson

>Hej, jag är inte så himla hemma på VB6, men App.Path brukar vålla problem för mig eftersom den pekar på olika ställen beroende på om programmet körs inifrån utvecklingsmiljön eller som en exe-fil.
Kan det vara någon liknande fälla här?

Det ovan skrivna beror på att du inte startar ett projekt på ett riktigt vis.Så fort du bestämt dig med
första Form skall du lägga/Spara Som i en egen mapp.Därefter skall du alltid starta projektet därifrån.

Beträffande ursprungsfrågan så måste du svara på hur du kompilerar/Option.Jag har själv råkat ut
för problemmet. Kolla vbp filen i tex NotePad hur ser sökvägarna ut ?


Svara

Sv: Exe-filen låser sig

Postades av 2004-08-12 11:02:11 - Kjell Andersson

Detta med DoEvents verkar vara lösningen! Jag är sååååååååå lycklig:)
(Men jag vågar inte sätta tråden som löst än)


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

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 570 710
27 958
271 751
535
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