Avatar billede adagio Nybegynder
22. januar 2003 - 14:18 Der er 26 kommentarer og
2 løsninger

To lette spørgsmål

15 point til hvert spørgsmål

1) Hvorfor kan jeg ikke bruge koden:

text1 = label1.top & label1.left

Når jeg kører koden, siger den at den ikke kan finde .top og .left

2) Hvordan får jeg en filelistbox til ikke at vise extension på en bestemt filtype (.skin)?
Avatar billede adagio Nybegynder
22. januar 2003 - 14:20 #1
Ang. spørgsmål 1: Det virker fint nok i andre forms...
Avatar billede michaelemanuel Nybegynder
22. januar 2003 - 14:32 #2
1)
Er det Text property på Text1 du forsøger at sætte ?
Så skal du skrive Text1.Text = Label1.Top & Label1.Left
Begge Controls skal selvfølgelig være at finde på din Form.

2)
Lav din egen filelistbox, ved at tilføje filnavne til en listbox.
Avatar billede adagio Nybegynder
22. januar 2003 - 14:37 #3
1) Det gør ingen forskel (og som standard forstår den alligevel text1 som text1.text (med mindre andet skrives)

2) Jeg er ikke lige helt med på, hvad du mener? Jeg kan godt få den til at kun vise de bestemte filer med patterne funktionen, men jeg kan ikke fjerne extension på filerne...
Avatar billede ocp Nybegynder
22. januar 2003 - 14:43 #4
1. Jeg gætter på at du eller VB er kommet til at sætte "index"-property'en til et tal (sker hvis du lave copy-paste med kontroller). Fjern dette tal, så skulle det være klaret.

2. Det kan du ikke. Alternativet er at lave en listbox og så selv løbe filerne igennem. Det vil ikke være til at skelne fra en "rigtig" filliste.
Avatar billede adagio Nybegynder
22. januar 2003 - 14:55 #5
1) Tak, det virker :o)

2) Nu er sådan at i mit program har jeg lavet sådan at man via filelistboxen skal vælge navnet på den skin der skal bruges (hvorefter den så tager ind i mappen med samme navn...). Den eneste måde jeg kunne finde ud af, var at sige at den fil der skal vælges ikke har nogen extension (derved kan jeg ikke bruge pattern metoden). og eftersom at den ikke har nogen extension blev jeg nødt til at have mappen til skinfilerne skulle hedde S + filnavn (dvs. vis filen hed Default, skulle bibloteket hedde SDefault). Jeg kunne ikke finde nogen måde, hvordan jeg kunne tage filnavnet, smid det ind i en variabel hvor extension ikke står (dvs. vis filnavnet er Default.skn så skulle den kun skrive Default i variablen...
Avatar billede martin_moth Mester
22. januar 2003 - 15:00 #6
Avatar billede adagio Nybegynder
22. januar 2003 - 15:07 #7
Jeg ved, men det er ikke let at finde en god titel til to vidt forskellige spørgsmål... ;)
Avatar billede ocp Nybegynder
22. januar 2003 - 15:12 #8
Dim sFilename As String

    sFilename = File1.List(File1.ListIndex)

    MsgBox Left$(sFilename, InStrRev(sFilename, ".") - 1)
Avatar billede martin_moth Mester
22. januar 2003 - 15:12 #9
Har du egentligt fået svar på 2'eren?

Jeg forstår dit problem således: Du vil indsætte nogle filer UDEN deres fileextention i en filelistbox.

Løsning: Du kan jo loope over alle filer i en mappe, og så smide deres filnavne (som jo er strings) ind i en listbox, hvor du så først fjerner extention fra hvert filnavn inden du indsætter dem - det er vist det ocp mener i sit svar 14:43:06 :o)
Avatar billede adagio Nybegynder
22. januar 2003 - 15:17 #10
Ja, det er det jeg ønsker, men hvordan er det så lige at man fjerner extension fra deres filnavne?
Avatar billede martin_moth Mester
22. januar 2003 - 15:21 #11
Ahh - det har ocp vist ligeherover 15:12:14  - det kunne jeg ikke se da jeg postede... Det er helt almindelig strengemanipulation. Kan du ikke lide løsningen fra ocp, kan du selv lave en med mid(), instr() og Left()
Avatar billede sjh Nybegynder
22. januar 2003 - 15:21 #12
Option Explicit

Private Sub Form_Load()
'(1)
'HUSK at sætte en Label1 (Label) og Text1 (TextBox) på din Form1
Text1 = CInt(Label1.Top) & CInt(Label1.Left)

'(2)
'File1.Pattern = "*.dll"
File1.Pattern = "*.skin"
End Sub
Avatar billede martin_moth Mester
22. januar 2003 - 15:23 #13
shj: Måske en god ide at læse de andre svar inden du kommer med dit... Du kommer ikke med noget nyt :o)
Avatar billede ocp Nybegynder
22. januar 2003 - 15:25 #14
Sådan her?:

    Dim sDir As String
    Dim sFilename As String

    sDir = Dir("*.*")
    While sDir <> ""
        List1.AddItem Left$(sDir, InStrRev(sDir, ".") - 1)
        sDir = Dir
    Wend
Avatar billede sjh Nybegynder
22. januar 2003 - 15:41 #15
martin_moth < (sjh tak) :)
Avatar billede adagio Nybegynder
22. januar 2003 - 15:43 #16
"Invalid procedure call or argument" siger den til denne linje: ?

        List1.AddItem Left$(sDir, InStrRev(sDir, ".") - 1)

Hvad er det lige sDir = Dir("*.*") gør? Jeg har ingen dirlist i programmet, den finder mappen via app.path
Avatar billede ocp Nybegynder
22. januar 2003 - 15:45 #17
I så fald skriver du:

  sDir = Dir(App.Path & "\*.*")

Det giver samtlige filer i App.Path.
Avatar billede ocp Nybegynder
22. januar 2003 - 15:48 #18
Jeg foreslår at du debugger og checker værdien af sDir når den fejler.
Avatar billede ocp Nybegynder
22. januar 2003 - 15:49 #19
Du skal naturligvis have en listbox der hedder list1.
Avatar billede adagio Nybegynder
22. januar 2003 - 15:56 #20
Stadig samme fejl

sDir = "Default"
Avatar billede martin_moth Mester
22. januar 2003 - 16:07 #21
En HELT anen løsning - brug FSO:

Gå til Project > References, og afkryds "Microsoft Scripting Runtime". Herefter kan du bruge FSO. Et eksempel, du kan bruge. Kærver, at du har en listbox (list1) på din form

  Dim MyFolder As Folder
  Dim MyFolderFiles As Files
  Dim FSO As FileSystemObject
  Dim MyFile As File
  Dim ExtStart As Integer
 
  Set FSO = CreateObject("Scripting.FileSystemObject")
  Set MyFolder = FSO.GetFolder("C:\test") '<- Ret denne linie til DIN folder
  Set MyFolderFiles = MyFolder.Files
 
  For Each MyFile In MyFolderFiles
    ExtStart = InStr(1, MyFile.Name, ".")
    If ExtStart > 0 Then
      List1.AddItem Mid(MyFile.Name, 1, ExtStart)
    End If
  Next MyFile
 
  Set MyFolderFiles = Nothing
  Set MyFolder = Nothing
  Set FSO = Nothing
Avatar billede adagio Nybegynder
22. januar 2003 - 16:12 #22
Martin >> Er det ikke også en mulighed at få . (punktum) efter filnavnet fjernet?
Avatar billede martin_moth Mester
22. januar 2003 - 16:21 #23
List1.AddItem Mid(MyFile.Name, 1, ExtStart-1)

Prøv at sæt dig ind i koden - kik i hjælpen på Mid() og InStr() - så kan du selv finde ud af at rette den til så det passer dig... :o)
Avatar billede adagio Nybegynder
22. januar 2003 - 16:29 #24
Tak det virker nu...

Jeg ved godt jeg skal sætte mig selv ind i koden, men jeg er ikke så god (endnu) til at forstå alt hvad der bliver beskrevet...

Så lukker jeg spørgsmålet, og giver 15 point til OCP og Martin Moth, som tak for hjælpen :o)
Avatar billede martin_moth Mester
22. januar 2003 - 16:36 #25
Mid() og InStr() er nogle af de strengemanipulations-funktioner VB har indbygget. Nogle andre er Len(), Right(), Trim(), LTrim(), RTrim(). Læs de få linier der står om hver funktion i hjælpen - dem kommer du garanteret til at bruge fremover. Det er ofte super-praktisk at kunne ændre på en string, som i dette tilfælge, hvor du kun vil bruge en del af en string, nemlig alt det der står før et "." (det der står efter er en extention, du ville vil have med. koden virker på denne måde:

Der loopes over alle filer. For hver fil tjekkes filnavnet (MyFile.Name), som er en string:

1) Der søges efter "." i din string (der indeholder et filnavn) - og hvis "." er i din string, returneres positionen, målt fra venstre. Positionen gemmes i variablen ExsStart. Til dette bruges InStr()

2) Herefter smides venstre del af din string, til og med positionen hvor "." blev fundet, over i din list1. Resten af stringen (det til højre for "." kommer ikke med). Til dette bruges Mid()
Avatar billede martin_moth Mester
22. januar 2003 - 16:37 #26
det der står efter er en extention, du ville vil have med =
det der står efter er en extention, du IKKE ville vil have med :o)
Avatar billede adagio Nybegynder
22. januar 2003 - 16:46 #27
ok, tak for infoen :o)
Avatar billede spg10 Nybegynder
21. april 2004 - 06:49 #28
1)
text1.text = label1.top & label1.left
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester