/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Fejl når jeg gemmer fil...
Fra : Simon Moore Højer


Dato : 16-10-04 14:58

Jeg bruger følgende kode til at gemme mine filer:

Private Sub cmdsave_Click()
CommonDialogSave.ShowSave 'henter filnavnet som filen skal gemmes
under

Open CommonDialogSave.FileName For Output As #2
Print #2, txtInput.Text

End Sub

Min CommonDialog har følgende proties:

Filter = Alle filer|*.*|Tekstfiler|*.txt|HTML|*.html|ASP|*.asp|CSS|*.css

Det virker også fint hvis jeg vælger at kalde min fil for 'test.txt', og
har valgt i 'SaveDialogBoxen' at det skal være en tekstfil.
Men hvis jeg vælger at det skal være en html-fil så og kalder den for
'test.txt' bliver det stadig kun til en tekstfil.

Hvad er der galt og hvordan får jeg den til at lave en htmlfil der
hedder 'test.txt.html' når jeg har valgt html som filtype i dialogboxen?

--
Simon Moore Højer

At programmere er at dykke ned i det hav af muligheder,
alle tiders hurtigst ekspanderende teknologi tilbyder.
Citat: Jakob Kristiansen (Start på visual basic 6.0)

www.viborgip.dk



 
 
Mathias (16-10-2004)
Kommentar
Fra : Mathias


Dato : 16-10-04 15:33

Saturday 16 October 2004 15:58 sagde Simon Moore Højer noget à la dette
i dk.edb.programmering.basic.visual-basic:

> Min CommonDialog har følgende proties:
>
> Filter = Alle
> filer|*.*|Tekstfiler|*.txt|HTML|*.html|ASP|*.asp|CSS|*.css
>
> Det virker også fint hvis jeg vælger at kalde min fil for 'test.txt',
> og har valgt i 'SaveDialogBoxen' at det skal være en tekstfil.
> Men hvis jeg vælger at det skal være en html-fil så og kalder den for
> 'test.txt' bliver det stadig kun til en tekstfil.
>
> Hvad er der galt og hvordan får jeg den til at lave en htmlfil der
> hedder 'test.txt.html' når jeg har valgt html som filtype i
> dialogboxen?

Nu er der gået et stykke tid siden jeg har haft VB mellem fingerene, men
har SaveDialogen ikke en property der indeholder hvad filter der er
blevet brugt? For så kunne du lave en gruppe nested ifs der finder ud
af om filtypen er rigtig - eller ønsketænker jeg mig bare til en sådan
property?

--
Mvh. Mathias | @: mathias der bor på mrside *i* dk
Registrered Linux user #369699 (http://counter.li.org)

preben nielsen (16-10-2004)
Kommentar
Fra : preben nielsen


Dato : 16-10-04 15:34


"Simon Moore Højer" <simonhoejer@hotmail.com> skrev i en
meddelelse news:417128ef$0$77007$14726298@news.sunsite.dk...

> Filter = Alle
> filer|*.*|Tekstfiler|*.txt|HTML|*.html|ASP|*.asp|CSS|*.css
>
> Det virker også fint hvis jeg vælger at kalde min fil for
> 'test.txt', og har valgt i 'SaveDialogBoxen' at det skal være en
> tekstfil.
> Men hvis jeg vælger at det skal være en html-fil så og kalder
> den for 'test.txt' bliver det stadig kun til en tekstfil.
>
> Hvad er der galt og hvordan får jeg den til at lave en htmlfil
> der hedder 'test.txt.html' når jeg har valgt html som filtype i
> dialogboxen?

Der er da intet her, som hjælper dig med at ændre filtypen !
Commondialog hjælper dig kun med at lade brugeren vælge et
filnavn. Indholdet af filen er din opgave.


--
/\ preben nielsen
\/\ prel@post.tele.dk



Lars Holm Jensen (16-10-2004)
Kommentar
Fra : Lars Holm Jensen


Dato : 16-10-04 18:07

Preben har ret..
Men der er lidt hjælp at hente i kontrollen:
(CommonDialog.Filter = "Text File|*.txt|HTML File|*.html")

CommonDialog.ShowSave

Select Case CommonDialog.FilterIndex 'Indexet på den filtype, som brugeren
har valgt at gemme filen som
Case 1 ' TXT
Open CommonDialog.FileName + ".txt" For Output As #FreeFile
'...
Case 2 ' HTML
Open CommonDialog.FileName + ".html" For Output As #FreeFile
'...
End Select


Dette vil nok hjælpe dig..

/Lars

**********************************************
Stud. Scient. Lars Holm Jensen
Dept. of Computer Science
University of Aalborg, Denmark
lhj@larsholm.net
www.larsholm.net



Simon Moore Højer (16-10-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 16-10-04 19:11

> Select Case CommonDialog.FilterIndex 'Indexet på den filtype, som
> brugeren har valgt at gemme filen som
> Case 1 ' TXT
> Open CommonDialog.FileName + ".txt" For Output As #FreeFile
> '...
> Case 2 ' HTML
> Open CommonDialog.FileName + ".html" For Output As #FreeFile
> '...
> End Select

Hvad nu hvis brugeren har skrevet 'test.txt' som filnavn, så vil filen
blive gemt som 'test.txt.txt'....
Hvordan undgås det?


--
Simon Moore Højer

At programmere er at dykke ned i det hav af muligheder,
alle tiders hurtigst ekspanderende teknologi tilbyder.
Citat: Jakob Kristiansen (Start på visual basic 6.0)

www.viborgip.dk



Mathias (16-10-2004)
Kommentar
Fra : Mathias


Dato : 16-10-04 20:58

Saturday 16 October 2004 20:10 sagde Simon Moore Højer noget à la dette
i dk.edb.programmering.basic.visual-basic:

>> Select Case CommonDialog.FilterIndex 'Indexet på den filtype, som
>> brugeren har valgt at gemme filen som
>> Case 1 ' TXT
>> Open CommonDialog.FileName + ".txt" For Output As #FreeFile
>> '...
>> Case 2 ' HTML
>> Open CommonDialog.FileName + ".html" For Output As #FreeFile
>> '...
>> End Select
>
> Hvad nu hvis brugeren har skrevet 'test.txt' som filnavn, så vil filen
> blive gemt som 'test.txt.txt'....
> Hvordan undgås det?

Lav en check med Right().
Altså, f.eks. ved TXT:

Case 1 ' TXT
If Not Right(CommonDialog.FileName, 4) = ".txt" Then
Open CommonDialog.FileName + ".txt" For Output As #FreeFile
Else
Open CommonDialog.FileName For Output As #FreeFile
End If

Osv. ved de andre filtyper.

--
Mvh. Mathias | @: mathias der bor på mrside *i* dk
Registrered Linux user #369699 (http://counter.li.org)

Simon Moore Højer (16-10-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 16-10-04 19:47

Nu bruger jeg denne kode:

Select Case CommonDialogSave.FilterIndex 'Indexet på den filtype, som
brugeren har valgt at gemme filen som

Case 1 ' TXT
Open CommonDialogSave.FileName + ".txt" For Output As #2
Print #2, txtInput.Text 'skriver filen

Close #2 'lukker filen igen

Case 2 ' HTML
Open CommonDialogSave.FileName + ".html" For Output As #2
Print #2, txtInput.Text 'skriver filen

Close #2 'lukker filen igen

Case 3 ' ASP
Open CommonDialogSave.FileName + ".asp" For Output As #2
Print #2, txtInput.Text 'skriver filen

Close #2 'lukker filen igen

Case 4 ' CSS
Open CommonDialogSave.FileName + ".css" For Output As #2
Print #2, txtInput.Text 'skriver filen

Close #2 'lukker filen igen
End Select

og det virker perfekt indtil jeg kalder min fil for 'filnavn' og jeg i
ShowSave har vlagt at det skal være en txt-fil, for så bliver filen døbt
'filnavn.txt.txt'
WHAT IS WRONG!


--
Simon Moore Højer

At programmere er at dykke ned i det hav af muligheder,
alle tiders hurtigst ekspanderende teknologi tilbyder.
Citat: Jakob Kristiansen (Start på visual basic 6.0)

www.viborgip.dk



Lars Holm Jensen (16-10-2004)
Kommentar
Fra : Lars Holm Jensen


Dato : 16-10-04 20:02

Du bliver nødt til at tjekke om den givne extension passer med den valgte i
dialogboksen.
Og kun hvis de ikke passer sammen, så læg den valgte til. Det er lidt
tricky, er du sikker på at hvis brugeren skriver 'minfil.html', men glemmer
at dialogen står på *.txt, at hun ikke hellere vil have gemt den som html.
(Jeg ved jeg hader det ved notepad, at jeg skal vælge 'All files'/'Alle
filer' for at den ikke gemmer som .txt)
/Lars



Simon Moore Højer (16-10-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 16-10-04 21:53

"Lars Holm Jensen" <lhj@larsholm.net> skrev i en meddelelse
news:41717034$0$77018$14726298@news.sunsite.dk...
> Du bliver nødt til at tjekke om den givne extension passer med den
> valgte i dialogboksen.
> Og kun hvis de ikke passer sammen, så læg den valgte til. Det er lidt
> tricky,

har du en ide til hvordan det kan gøres?


>er du sikker på at hvis brugeren skriver 'minfil.html', men glemmer at
>dialogen står på *.txt, at hun ikke hellere vil have gemt den som html.

God pointe


> (Jeg ved jeg hader det ved notepad, at jeg skal vælge 'All
> files'/'Alle filer' for at den ikke gemmer som .txt)

Nu du siger det så kan jeg godt se det smarte i det... den ville jeg
lige dreje en ekstra gang.


--
Simon Moore Højer

At programmere er at dykke ned i det hav af muligheder,
alle tiders hurtigst ekspanderende teknologi tilbyder.
Citat: Jakob Kristiansen (Start på visual basic 6.0)

www.viborgip.dk



Tomas Christiansen (17-10-2004)
Kommentar
Fra : Tomas Christiansen


Dato : 17-10-04 16:36

Simon Moore Højer skrev_
> >> Open CommonDialog.FileName + ".txt" For Output As #FreeFile
> Hvis man har lidt selvstændig hjerneaktivitet så insætter man selv et
> tal i stedet for FreeFile, når man skal bruge koden.....

Det er jo unægtelig ud som om du ikke har forstået idéen med FreeFile, når
man ser koden, og når du så foreslår at man skal indsætte et tal (jeg
opfatter det som en tal-konstant), så bliver det ikke bredre...

At komme med eksempel-kode som er direkte forkert er ikke så heldigt overfor
en person som jo netop har problemer med at få kode til at virke (ihvertfald
uden at gøre opmærksom på at koden er mangelfuld/forkert på visse områder).

Idéen med FreeFile er at den returnerer et filnummer, som IKKE er i brug, og
man kan bruge den således:

Dim TekstFil As Integer
TekstFil = FreeFile
Open "minfil.txt" For Output As TekstFil
Print #TekstFil, "Første linie"
Close TekstFil

På den måde sikrer man sig mod at man kommer til at genbruge filnumre som
allerede ER i brug. Hvis f.eks. at man pludselig finder på at have en
log-fil som skal være åben mens programmet kører eller man bruger en
komponent som en anden har lavet, og denne komponent selv kan finde på at
åbne filer, risikerer man at der er sammenfald på filnumrene, hvis man
hard-koder værdierne. Det sker aldrig, hvis man bruger FreeFile korrekt.

-------
Tomas


Tomas Christiansen (17-10-2004)
Kommentar
Fra : Tomas Christiansen


Dato : 17-10-04 00:58

Lars Holm Jensen skrev:
> Open CommonDialog.FileName + ".txt" For Output As #FreeFile

Hvad er lige den forkromede idé med at bruge funktionen Freefile direkte i
Open-statementet?
Hvordan skal man kunne vide hvilken værdi Freefile rent faktisk
returnerede - og dermed hvilket fil-nummer man skal skrive til og senerehen
lukke igen?

-------
Tomas


Simon Moore Højer (17-10-2004)
Kommentar
Fra : Simon Moore Højer


Dato : 17-10-04 08:40

>> Open CommonDialog.FileName + ".txt" For Output As #FreeFile
>
> Hvad er lige den forkromede idé med at bruge funktionen Freefile
> direkte i
> Open-statementet?
> Hvordan skal man kunne vide hvilken værdi Freefile rent faktisk
> returnerede - og dermed hvilket fil-nummer man skal skrive til og
> senerehen
> lukke igen?

Hvis man har lidt selvstændig hjerneaktivitet så insætter man selv et
tal i
stedet for FreeFile, når man skal bruge koden.....


--
Simon Moore Højer

At programmere er at dykke ned i det hav af muligheder,
alle tiders hurtigst ekspanderende teknologi tilbyder.
Citat: Jakob Kristiansen (Start på visual basic 6.0)

www.viborgip.dk



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409079
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste