Načtení obrázků   otázka

VB6/VBA

Když mám program, který načíta z CD romky obrázek, co mi dává jistotu , že když napíšu "H:\cesta k obrázku\obrázek. Co když u jiného počítače se CD-rom bude jmenovat G. Nebo tam budou i dvě nebo více CD romek, co pak?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

ve VB.net to lze tuším zajisit pomocí třídy System.IO.Path, tak jako tak bych to ještě ošetřil blokem TRY..CATCH

nahlásit spamnahlásit spam 0 odpovědětodpovědět

nebo system.enviroment.getfolderpath()

ale nejsem si jistý jestli je tam něco pro výchozí CD mechaniku

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Všechny platné disky můžete zjisti jednoduše např. pomocí skrytého DriveListBoxu. Typ disku zjistíte pomocí API GetDriveType. Příklad:

Luboš

Option Explicit
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Private Sub Command1_Click()
Dim i As Long
Dim disk As String
For i = Asc("A") To Asc("Z")
    disk = Chr(i) & " = "
    Select Case GetDriveType(Chr(i) & ":\")
        Case 2
            Me.Print disk; "Removable"
        Case 3
            Me.Print disk; "Drive Fixed"
        Case Is = 4
            Me.Print disk; "Remote"
        Case Is = 5
            Me.Print disk; "Cd-Rom"
        Case Is = 6
            Me.Print disk; "Ram disk"
    End Select
Next i
End Sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tenhle kód mi nějak nefunguuje. Nejdřív mi to podtrhne, abych příkaz:

Option Explicit

přepsal na:

Option Explicit On

úplně na začátek kódu kde je např: Imports System.Math. Dále mi to příkaz:

Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

mi to oddělilo od zbývyjícího kódu, kde mi to všude kde je napsáno:

Me.Print disk;

podtrhlo modře.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Možno by bolo najlepšie ujasniť si v čom vlastne programujete príspevok ste napísal do sekcie "Visual Basic 6" ale Imports System.Math čo uvádzate hore je z VB .NET ???

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Programuju ve Visual Studiu 2010

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud je na disku i aplikace, která obrázek načítá, pak adresujte relativně k umístění aplikace a písmeno názvu CD není potřeba znát.

Jde-li o aplikaci umístěnou jinde než obrázky, pak disk se do mechaniky sám nevloží - vložte do aplikace dotaz na písmeno disku anebo dialog pro vyhledání souborů.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

A jak mám adresovat relativně?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Realativní adresa se vztahuje k určitému místu. Bude-li to "určité místo" umístění aplikace a např. o úroveň výš budou obrázky, pak adresa k obrázkům bude začínat s ..\

Dvě tečky znamená o úroveň výš, o dvě úrovně výš zapíšete ..\..\

Na stejné úrovni je .\

Kdybyste chtěl adresovat od začátku disku (kořene), začnete \ (obráceným lomítkem), tedy jak jste chtěl, jen bez písměne disku a dvojtečky.

Připomínám, že uvedené platí, když vaše aplikace a obrázky budou na stejném disku.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Len dúfam, že nedá do programu "\Users\<Meno Užívateľa>\Pictures\".

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A nešlo by to jednodušeji udělat takkhle? Jenom jestli to bude fungovat.

Try
pbgeometrie.Enabled = True
            pbgeometrie.SizeMode = PictureBoxSizeMode.StretchImage
            pbgeometrie.Image = System.Drawing.Image.FromFile("E:\Schizophrenia\Picture\pravidelny_mnohouhelnik.png")
Catch
pbgeometrie.Enabled = True
            pbgeometrie.SizeMode = PictureBoxSizeMode.StretchImage
            pbgeometrie.Image = System.Drawing.Image.FromFile("F:\Schizophrenia\Picture\pravidelny_mnohouhelnik.png")
End Try

A dál bych vypisoval další vnořené příkazy v bloku Try-Catch. Zkoušel bych další jména vyměnitelných disků. Šlo by to i takhle?

nahlásit spamnahlásit spam -3 / 3 odpovědětodpovědět

Tak teda tým, že dáte to isté do Try a do Catch, to určite nevyriešite.

A tým, že tam dáte do cesty "E:\", tak program bude fungovať len, ak bude CD v mechanike E, ktorá nemusí existovať.Použite relatívnu cestu.

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

Teda takto testovať, na ktorej jednotke sú obrázky....Nie je jednoduchšie adresovať relatívne?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback