Új hozzászólás Aktív témák

  • Baboka
    tag

    Próbáld meg elötte kiválasztani a sheet-et és a cellát és utána lekérdezni. Esetleg nézz át az Excel topicba, ott sokkal több tapasztalat van az excel makrók tekintetében.

    AE

    köszi azért a fáradságod, megpróbálom ott is. :))

  • ArchElf
    addikt

    sajna value-vel sem megy ugyan azt dobja ki, kérdezz meg bármit válaszolok mindenre csak már nem ez az első makró aminél ezt a hibát kapom :F

    For i = fk + 1 To ssz
    If (Sheets(2).Cells(i, eo).Value <> "") Then
    For j = fk + 1 To ssz
    If (Sheets(1).Cells(j, mo1).Value = Sheets(2).Cells(i, mo1).Value) And (Sheets(1).Cells(j, mo2) = Sheets(2).Cells(i, mo2)) And (Sheets(1).Cells(j, mo3) = Sheets(2).Cells(i, mo3)) Then
    For k = 1 To osz
    Sheets(1).Cells(j, k) = Sheets(2).Cells(i, k)
    Next k
    End If
    Next j
    End If
    Next i

    Próbáld meg elötte kiválasztani a sheet-et és a cellát és utána lekérdezni. Esetleg nézz át az Excel topicba, ott sokkal több tapasztalat van az excel makrók tekintetében.

    AE

  • Baboka
    tag

    így próbáltad?
    (Sheets(2).Cells(i, eo).Value
    Ja és használj kódbeillesztést, mert tagolatlan kódot kínszenvedés olvasni...
    A változónevek sem mondanak amúgy sokat...

    AE

    sajna value-vel sem megy ugyan azt dobja ki, kérdezz meg bármit válaszolok mindenre csak már nem ez az első makró aminél ezt a hibát kapom :F

    For i = fk + 1 To ssz
    If (Sheets(2).Cells(i, eo).Value <> "") Then
    For j = fk + 1 To ssz
    If (Sheets(1).Cells(j, mo1).Value = Sheets(2).Cells(i, mo1).Value) And (Sheets(1).Cells(j, mo2) = Sheets(2).Cells(i, mo2)) And (Sheets(1).Cells(j, mo3) = Sheets(2).Cells(i, mo3)) Then
    For k = 1 To osz
    Sheets(1).Cells(j, k) = Sheets(2).Cells(i, k)
    Next k
    End If
    Next j
    End If
    Next i

  • ArchElf
    addikt

    sziasztok!

    Elkezdtem egy táblaösszemásoló makrót megírni, még kezdő vagyok nagyon, ezt kérem figyelembe venni, de az a problémám hogy mindig a jó kis runtime error 1004 jön ki a program ciklusainál

    For i = fk + 1 To ssz
    If (Sheets(2).Cells(i, eo) <> "") Then <----------------itt áll le
    For j = fk + 1 To ssz
    If (Sheets(1).Cells(j, mo1) = Sheets(2).Cells(i, mo1)) And (Sheets(1).Cells(j, mo2) = Sheets(2).Cells(i, mo2)) And (Sheets(1).Cells(j, mo3) = Sheets(2).Cells(i, mo3)) Then
    For k = 1 To osz
    Sheets(1).Cells(j, k) = Sheets(2).Cells(i, k)
    Next k
    End If
    Next j
    End If
    Next i

    fk: táblafejléc kezdete
    eo: ellenőrző oszlop, ha üres akkor meg sem kell vizsgálni
    mo1,2,3: adatoszlopok száma, amiket meg kell vizsgálnia

    ha tudtok segíteni akkor előre is köszönöm! :)

    így próbáltad?
    (Sheets(2).Cells(i, eo).Value
    Ja és használj kódbeillesztést, mert tagolatlan kódot kínszenvedés olvasni...
    A változónevek sem mondanak amúgy sokat...

    AE

  • Baboka
    tag

    sziasztok!

    Elkezdtem egy táblaösszemásoló makrót megírni, még kezdő vagyok nagyon, ezt kérem figyelembe venni, de az a problémám hogy mindig a jó kis runtime error 1004 jön ki a program ciklusainál

    For i = fk + 1 To ssz
    If (Sheets(2).Cells(i, eo) <> "") Then <----------------itt áll le
    For j = fk + 1 To ssz
    If (Sheets(1).Cells(j, mo1) = Sheets(2).Cells(i, mo1)) And (Sheets(1).Cells(j, mo2) = Sheets(2).Cells(i, mo2)) And (Sheets(1).Cells(j, mo3) = Sheets(2).Cells(i, mo3)) Then
    For k = 1 To osz
    Sheets(1).Cells(j, k) = Sheets(2).Cells(i, k)
    Next k
    End If
    Next j
    End If
    Next i

    fk: táblafejléc kezdete
    eo: ellenőrző oszlop, ha üres akkor meg sem kell vizsgálni
    mo1,2,3: adatoszlopok száma, amiket meg kell vizsgálnia

    ha tudtok segíteni akkor előre is köszönöm! :)

  • martonx
    veterán

    Értem , minden igaz holnap veszek usb->lpt port közbe kiderült hogy ebbe a gépbe nincs is lpt csatlakozo mert van 3 gépem :S + 2 az ágy alat na mind 1 és veszek lpt s bkábel és serial port kábel és kezdődhet a banzáj . Ez a uln2803 ez egy bipolári motor vezérlő ez a bitekel csinál valamit csak sajnos most nem találtam leírást .

    :)) Igen ezt mondtam. Manapság (kb. 5 éve) már megszűnt a PC-ken a serial, és az lpt port.
    Csodálom is, hogy milyen régi cuccot akarhatsz összekötni, mert a mikrovezérlők is jópár éve USB-re álltak át.
    Azért sok szerencsét hozzá!

  • Fogalmam sincs. Én mindig csak megmondom a kódnak, hogy mit küldjön, ha akarom kiolvasom, hogy mit küldött a periféria, de hogy ezt a .Net framework pontosan hogy is valósítja meg az már nem az én gondom.
    Hogy maga a .Net milyen serial port lábakon mit csinál ahhoz, hogy mondjuk én egy 9-est kiküldjek serial porton a periféria felé, fingom sincs, és őszintén nem is akarom tudni :K
    A lényeg, hogy működik.

    Értem , minden igaz holnap veszek usb->lpt port közbe kiderült hogy ebbe a gépbe nincs is lpt csatlakozo mert van 3 gépem :S + 2 az ágy alat na mind 1 és veszek lpt s bkábel és serial port kábel és kezdődhet a banzáj . Ez a uln2803 ez egy bipolári motor vezérlő ez a bitekel csinál valamit csak sajnos most nem találtam leírást .

  • martonx
    veterán

    Serialport is ugyan az a variáció van mint lpt porton? Mert azt tudom hogy pinek vannak ?

    Fogalmam sincs. Én mindig csak megmondom a kódnak, hogy mit küldjön, ha akarom kiolvasom, hogy mit küldött a periféria, de hogy ezt a .Net framework pontosan hogy is valósítja meg az már nem az én gondom.
    Hogy maga a .Net milyen serial port lábakon mit csinál ahhoz, hogy mondjuk én egy 9-est kiküldjek serial porton a periféria felé, fingom sincs, és őszintén nem is akarom tudni :K
    A lényeg, hogy működik.

  • martonx
    veterán

    Akkor mégis látogass át a C topicba ;)

    AE

    Miért kellene ehhez C?

    http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx

    Linux alatt ott van a monodeveloper. Abban mondjuk nem vagyok 100% biztos, hogy IO szinten is jól működik, de egyébként általában hibátlanul mennek a .Net kódok monodeveloperrel Linux alatt is.

    Még mondja azt valaki, hogy .Net-el csak windows platformon lehet dolgozni :C

    Konkértan a serialport használatához csak C#-os munkáim vannak, de ha kell szívesen lefordítom azt a néhány sort VB.Net-re :)

  • ArchElf
    addikt

    Mert c++ meglehet oldani ?:O Amit szeretnék

    Azért mert soros/párhuzamos porti kezelést szeretnél linux alatt.
    Mivel linux alá dolgozol célszerű ott támogatott nyelvet használni, ami lehet C vagy C++. De ha nincs kedved hozzá, használhatsz akár python-t is (ott is van soros portos kommunikációt támogató csomag: PySerial - ez tartalmaz parallel porti modult is)

    AE

  • ArchElf
    addikt

    Én pont azt szeretném hogy a gép legyen a mikro vezérlő hogy ne keljen pic-et sütni , akkor minden képpen kell egy ezekhez hasonló [link]

    Akkor mégis látogass át a C topicba ;)

    AE

  • Nem értitek. A Basic Stamp a mikrovezérlő programnyelve.
    Én mondtam, hogy keveredik a szezon a fazonnal :))
    Azaz a Basic Stamp-ben írt program nem a számítógépen fog futni, hanem a mikrovezérlőn.
    Csak annyi kell, hogy fel kell telepíteni a Basic Stamp editort (én csak windows-os verziót találtam, úgyhogy ubuntu bukónak látszik), majd USB-n keresztül összekötöd a cuccot a PC-vel, és feltöltöd rá a megírt programot.
    Erre mondtam, hogy ebben kb. bárki fog tudni segíteni, akinek van Parallax mikrovezérlős robotja kéznél :C Tele van a világ ilyenekkel, nem? :DD
    A programozás rész sem lesz bonyolult, mert ezek a mikrovezérlők nagyon buták.
    Ez az LPT, meg soros port buzerálás is valami alapvető félreértés lesz, mivel ezeken a cuccokon USB port van (már egy pár éve), akkor miért kellene már rég nem létező portokkal hülyéskedni?

    Van egy mérnök informatikus diplomám is :) maszekban néha szoktam robotokhoz is programot írni, legutóbb haletető robothoz írtam menedzsment felületet .Net WPF-ben, igaz az txt fájlokkal kommunikált a PC-s adatbázissal. Basic Stamp-pel még életemben nem találkoztam, csak hallottam róla. A többi robotos munkám is mind USB porton keresztül kommunikál.

    Én pont azt szeretném hogy a gép legyen a mikro vezérlő hogy ne keljen pic-et sütni , akkor minden képpen kell egy ezekhez hasonló [link]

  • ArchElf
    addikt

    Nem értitek. A Basic Stamp a mikrovezérlő programnyelve.
    Én mondtam, hogy keveredik a szezon a fazonnal :))
    Azaz a Basic Stamp-ben írt program nem a számítógépen fog futni, hanem a mikrovezérlőn.
    Csak annyi kell, hogy fel kell telepíteni a Basic Stamp editort (én csak windows-os verziót találtam, úgyhogy ubuntu bukónak látszik), majd USB-n keresztül összekötöd a cuccot a PC-vel, és feltöltöd rá a megírt programot.
    Erre mondtam, hogy ebben kb. bárki fog tudni segíteni, akinek van Parallax mikrovezérlős robotja kéznél :C Tele van a világ ilyenekkel, nem? :DD
    A programozás rész sem lesz bonyolult, mert ezek a mikrovezérlők nagyon buták.
    Ez az LPT, meg soros port buzerálás is valami alapvető félreértés lesz, mivel ezeken a cuccokon USB port van (már egy pár éve), akkor miért kellene már rég nem létező portokkal hülyéskedni?

    Van egy mérnök informatikus diplomám is :) maszekban néha szoktam robotokhoz is programot írni, legutóbb haletető robothoz írtam menedzsment felületet .Net WPF-ben, igaz az txt fájlokkal kommunikált a PC-s adatbázissal. Basic Stamp-pel még életemben nem találkoztam, csak hallottam róla. A többi robotos munkám is mind USB porton keresztül kommunikál.

    Ehh :DDD

    AE

  • martonx
    veterán

    Ubuntu + Basic? WTF???
    Szerintem nézz át a C topicba :D

    AE

    Nem értitek. A Basic Stamp a mikrovezérlő programnyelve.
    Én mondtam, hogy keveredik a szezon a fazonnal :))
    Azaz a Basic Stamp-ben írt program nem a számítógépen fog futni, hanem a mikrovezérlőn.
    Csak annyi kell, hogy fel kell telepíteni a Basic Stamp editort (én csak windows-os verziót találtam, úgyhogy ubuntu bukónak látszik), majd USB-n keresztül összekötöd a cuccot a PC-vel, és feltöltöd rá a megírt programot.
    Erre mondtam, hogy ebben kb. bárki fog tudni segíteni, akinek van Parallax mikrovezérlős robotja kéznél :C Tele van a világ ilyenekkel, nem? :DD
    A programozás rész sem lesz bonyolult, mert ezek a mikrovezérlők nagyon buták.
    Ez az LPT, meg soros port buzerálás is valami alapvető félreértés lesz, mivel ezeken a cuccokon USB port van (már egy pár éve), akkor miért kellene már rég nem létező portokkal hülyéskedni?

    Van egy mérnök informatikus diplomám is :) maszekban néha szoktam robotokhoz is programot írni, legutóbb haletető robothoz írtam menedzsment felületet .Net WPF-ben, igaz az txt fájlokkal kommunikált a PC-s adatbázissal. Basic Stamp-pel még életemben nem találkoztam, csak hallottam róla. A többi robotos munkám is mind USB porton keresztül kommunikál.

  • ArchElf
    addikt

    Ubuntut használok ,de windows is feltehetek ha egyszerűbb abba , őő ezt pontosan nem (alacsony-magas jelszint <- ez azt jelenteni hogy milyen erősen küldje az impulzusokat?

    Ubuntu + Basic? WTF???
    Szerintem nézz át a C topicba :D

    AE

  • Feszültséget nem lehet módosítani (a hagyományos értelemben) LPT-n; illetve be-ki állapot van (alacsony-magas jelszint).
    Milyen OS-alá készülne a program?

    AE

    Ubuntut használok ,de windows is feltehetek ha egyszerűbb abba , őő ezt pontosan nem (alacsony-magas jelszint <- ez azt jelenteni hogy milyen erősen küldje az impulzusokat?

  • ArchElf
    addikt

    De tudsz benne majd segíteni , és lehet akkor feszültséget módosítani? Egy uln2803 ic-m van .

    Feszültséget nem lehet módosítani (a hagyományos értelemben) LPT-n; illetve be-ki állapot van (alacsony-magas jelszint).
    Milyen OS-alá készülne a program?

    AE

  • Serialra ott az mscomm32.dll (vagy .ocx, vagy valami hasonló), formra kipakolható - nem túl okos, de használható. LPT-re google (kapásból nem tudok biztos megoldást mondani).

    AE

    De tudsz benne majd segíteni , és lehet akkor feszültséget módosítani? Egy uln2803 ic-m van .

  • ArchElf
    addikt

    Röviden egy olyan program szeretnék ami az ltp portot vagy a soros portott kinyíitja egy időre és a megadott portott . Esetleg lehetne olyat hogy a leadot feszültséget szabályozni?

    Serialra ott az mscomm32.dll (vagy .ocx, vagy valami hasonló), formra kipakolható - nem túl okos, de használható. LPT-re google (kapásból nem tudok biztos megoldást mondani).

    AE

  • Pfff... a stamp code rész felett el is siklottam :D
    Azt hittem valami pszeudo-kód :DDD

    Bár jobban belegondolva még megvalósítható is volna, csak a megfelelő dll-exportok hiányoznak :)

    AE

    Röviden egy olyan program szeretnék ami az ltp portot vagy a soros portott kinyíitja egy időre és a megadott portott . Esetleg lehetne olyat hogy a leadot feszültséget szabályozni?

  • ArchElf
    addikt

    Szerintem keverjük a szezont a fazonnal.
    Amiről te beszélsz az egy bizonyos mikrovezérlő BASIC Stamp programnyelve.
    Namármost nem találsz olyan embert, aki ezt ismeri, egy-két éppen ezt használón kívül.
    Másrészt maga a szintaktika pofonegyszerű basicnek tűnik, szóval egy ilyen eszközzel a soros portján, és a szükséges fejlesztői kereteszközöket feltelepítve kb. bármelyik programozó tud neked segíteni a beüzemelésben.

    Pfff... a stamp code rész felett el is siklottam :D
    Azt hittem valami pszeudo-kód :DDD

    Bár jobban belegondolva még megvalósítható is volna, csak a megfelelő dll-exportok hiányoznak :)

    AE

  • martonx
    veterán

    Üdv lenne egy olyan kérdésem hogy szeretnék építeni egy robotott az elektronika megvan csak a program hiányzik . Adtak egy példált hozzá de nem akar lefutni mi a progbléma? A pdf tartalmát kimásoltam (angol)

    A real-world example
    Francis Rogers of Sun City West, Arizona wrote me to describe an application he’d like
    to build with the Stamp. He has a PC with barcode software that can read membership
    cards for his S.C.W. Metals Club. The barcode software generates a code through the PC
    serial port when it’s presented with a valid card. Mr. Rogers would like the Stamp to read
    this code and energize a relay to unlatch a door.
    This fits perfectly with the theme of this month’s column. Figure 6.3 is the schematic.
    I’ve made some assumptions about Mr. Rogers’ barcode software: that it can be set to
    output at 2400 baud, and that all valid cards output some common code for the Stamp to
    recognize.
    Thanks to the serial-input (Serin) command’s built-in “qualifier” feature, the entire
    program takes just a few lines of Stamp code:

    loop:
    low 7 ' Pin 7 low to latch door (relay open)
    serin 0,N2400,("OK") ' Watch serial input until "OK" rec'd.
    high 7 ' Pin 7 high to unlatch door (relay closed).
    pause 5000 ' Wait 5 seconds. Latch door and resume
    goto loop ' Watching serial input.

    Of course, Mr. Rogers will have to substitute the actual password for “OK” in the
    program above.
    That’s it for this month. Next time, we’ll look at a nifty IC that lets the Stamp transmit
    and receive DTMF tones (telephone touch tones). In addition to obvious telephone
    applications, DTMF can be used as a form of low-speed, high-reliability data transfer.
    Stay tuned!

    The Nuts and Volts of BASIC Stamps (Volume 1) • Page 57

    Szerintem keverjük a szezont a fazonnal.
    Amiről te beszélsz az egy bizonyos mikrovezérlő BASIC Stamp programnyelve.
    Namármost nem találsz olyan embert, aki ezt ismeri, egy-két éppen ezt használón kívül.
    Másrészt maga a szintaktika pofonegyszerű basicnek tűnik, szóval egy ilyen eszközzel a soros portján, és a szükséges fejlesztői kereteszközöket feltelepítve kb. bármelyik programozó tud neked segíteni a beüzemelésben.

  • ArchElf
    addikt

    Üdv lenne egy olyan kérdésem hogy szeretnék építeni egy robotott az elektronika megvan csak a program hiányzik . Adtak egy példált hozzá de nem akar lefutni mi a progbléma? A pdf tartalmát kimásoltam (angol)

    A real-world example
    Francis Rogers of Sun City West, Arizona wrote me to describe an application he’d like
    to build with the Stamp. He has a PC with barcode software that can read membership
    cards for his S.C.W. Metals Club. The barcode software generates a code through the PC
    serial port when it’s presented with a valid card. Mr. Rogers would like the Stamp to read
    this code and energize a relay to unlatch a door.
    This fits perfectly with the theme of this month’s column. Figure 6.3 is the schematic.
    I’ve made some assumptions about Mr. Rogers’ barcode software: that it can be set to
    output at 2400 baud, and that all valid cards output some common code for the Stamp to
    recognize.
    Thanks to the serial-input (Serin) command’s built-in “qualifier” feature, the entire
    program takes just a few lines of Stamp code:

    loop:
    low 7 ' Pin 7 low to latch door (relay open)
    serin 0,N2400,("OK") ' Watch serial input until "OK" rec'd.
    high 7 ' Pin 7 high to unlatch door (relay closed).
    pause 5000 ' Wait 5 seconds. Latch door and resume
    goto loop ' Watching serial input.

    Of course, Mr. Rogers will have to substitute the actual password for “OK” in the
    program above.
    That’s it for this month. Next time, we’ll look at a nifty IC that lets the Stamp transmit
    and receive DTMF tones (telephone touch tones). In addition to obvious telephone
    applications, DTMF can be used as a form of low-speed, high-reliability data transfer.
    Stay tuned!

    The Nuts and Volts of BASIC Stamps (Volume 1) • Page 57

    Kód nélkül nem túl egyszerű erre bármit is mondani...

    AE

  • Üdv lenne egy olyan kérdésem hogy szeretnék építeni egy robotott az elektronika megvan csak a program hiányzik . Adtak egy példált hozzá de nem akar lefutni mi a progbléma? A pdf tartalmát kimásoltam (angol)

    A real-world example
    Francis Rogers of Sun City West, Arizona wrote me to describe an application he’d like
    to build with the Stamp. He has a PC with barcode software that can read membership
    cards for his S.C.W. Metals Club. The barcode software generates a code through the PC
    serial port when it’s presented with a valid card. Mr. Rogers would like the Stamp to read
    this code and energize a relay to unlatch a door.
    This fits perfectly with the theme of this month’s column. Figure 6.3 is the schematic.
    I’ve made some assumptions about Mr. Rogers’ barcode software: that it can be set to
    output at 2400 baud, and that all valid cards output some common code for the Stamp to
    recognize.
    Thanks to the serial-input (Serin) command’s built-in “qualifier” feature, the entire
    program takes just a few lines of Stamp code:

    loop:
    low 7 ' Pin 7 low to latch door (relay open)
    serin 0,N2400,("OK") ' Watch serial input until "OK" rec'd.
    high 7 ' Pin 7 high to unlatch door (relay closed).
    pause 5000 ' Wait 5 seconds. Latch door and resume
    goto loop ' Watching serial input.

    Of course, Mr. Rogers will have to substitute the actual password for “OK” in the
    program above.
    That’s it for this month. Next time, we’ll look at a nifty IC that lets the Stamp transmit
    and receive DTMF tones (telephone touch tones). In addition to obvious telephone
    applications, DTMF can be used as a form of low-speed, high-reliability data transfer.
    Stay tuned!

    The Nuts and Volts of BASIC Stamps (Volume 1) • Page 57

  • ezekiel
    aktív tag

    Szia!

    Két lehetőséged van:

    1. Küldesz valami konkrétumot (kódot), hogy hol akadtál el.
    2. Google

    Üdv: martonx

    Szia!

    A hálózat megosztós Sub:

    Sub halozat_megoszt(ByVal targetname As String, ByVal ip As String)
    Dim megosztas As NetSharingManager = New NetSharingManager
    Dim kapcs As INetConnection
    Dim prop As IntPtr
    Dim s As Object
    For Each kapcs In megosztas.EnumEveryConnection
    If megosztas.NetConnectionProps(kapcs).Name = My.Forms.Form3.ComboBox1.SelectedItem Then
    megosztas.INetSharingConfigurationForINetConnection(kapcs).EnableSharing(tagSHARINGCONNECTIONTYPE.ICSSHARINGTYPE_PUBLIC)

    és ezután kéne megadnom azt hogy melyik otthoni kapcsolaton akarom leosztani de erre nincs ötletem. Googlet egy hete túrom eredmény nélkül

  • martonx
    veterán

    Sziasztok!

    Segítségeteket kérném. Programot írok hálózati kapcsolat megosztás és wirtual router létrehozásával kapcsolatban.

    Majdnem minden kész. Egy valami hiányzik az pedig az hogy a kívánt hálózati kapcsolat megosztás füle alatt kitudjam választani azt a kártyát amin megakarom osztani. Az is megvan hogy kipppantom a megengedem a hálózat más felhasználóinak hogy ezt a kapcsolatot használják de erre az egyre nem tudok rájönni.

    Visual basicről van szó.

    Tud valaki ebben segíteni nekem?

    Üdv, Győző

    Szia!

    Két lehetőséged van:

    1. Küldesz valami konkrétumot (kódot), hogy hol akadtál el.
    2. Google

    Üdv: martonx

  • ezekiel
    aktív tag

    Sziasztok!

    Segítségeteket kérném. Programot írok hálózati kapcsolat megosztás és wirtual router létrehozásával kapcsolatban.

    Majdnem minden kész. Egy valami hiányzik az pedig az hogy a kívánt hálózati kapcsolat megosztás füle alatt kitudjam választani azt a kártyát amin megakarom osztani. Az is megvan hogy kipppantom a megengedem a hálózat más felhasználóinak hogy ezt a kapcsolatot használják de erre az egyre nem tudok rájönni.

    Visual basicről van szó.

    Tud valaki ebben segíteni nekem?

    Üdv, Győző

  • ArchElf
    addikt

    Üdv,

    segítségeteket kérném Excel VB makróban. A nyelvet nem ismerem, bár sikerült alapszinten megértenem a szintaxisát, viszont a problémám a (matematikai) logikájával van ennek a feladatnak.
    A lényeg az, hogy a feladat megoldása HIBÁS. Magával az algoritmussal van baj, gyanítom az, hogy létezik ennél optimálisabb megoldás.
    A lényeg az lenne, hogy ki kellene javítani optimálisra.
    Fontos lenne, aki tud, kérem nézzen rá. :)

    Adott a következő feladat:
    Adott egy híd, amin N ember át szeretne kelni. Azt tudjuk, hogy nem feltétlenül egyenlő sebességgel képesek haladni. Az egyes emberek átjutásához szükséges időket jelölje T(I). Egyszerre csak ketten tudnak átkelni a hídon. Sötét van, ezért szükségük van egy lámpásra. Leghamarabb mennyi idő alatt tudnak mindnyájan a túlsó partra jutni? (NE feledjük, a lámpást az egyik átjutottnak vissza kell hoznia, hogy a többiek is lássanak az átkelés során!)

    Van hozzá egy megoldás leírása:
    Látható, hogy 3 ember esetén a leggyorsabb bárki mással átmehet, ő jön vissza, és aki még maradt azzal újra átmegy a hídon. Az átkeléshez szükséges idő összesen T(1)+T(2)+(T(3) feltéve, hogy az embereket az átkelés sebessége szerint csökkenőbe (ez időben növekvőt jelent) rendeztük. Azaz pl. átmegy az 1. és a 2. (Idő: T(2)), visszajön az 1. (Idő: T(1)), és végül átmegy az 1. és a 3. (Idő: T(3)). Ha 4 ember van, akkor ez helyesen pl. úgy alakul, hogy: átmegy az 1. és a 2., visszajön az 1., átmegy a 3. és a 4., visszajön a 2., és végül átmegy az 1. és a 2. Észrevehető, hogy az 1. és a 2. tulajdonképpen átjuttatja a 3. és 4. párosát, és ehhez pontosan T(1)+2*T(2)+T(4) időre van szükség. majd végül ők is átmennek (Idő: T(2)). Ha az átkelők száma páros, akkor - az előzőekből helyesen következtetve - úgy tudjuk kiszámolni, hogy mennyi időre van szükség, hogy a leglassúbb idejéből elindulva minden másodikat összegzünk egészen T(4)-ig, és ehhez annyiszor T(1)+2*T(2)-t adunk hozzá, amennyi az átjuttatott párok száma. Végül ehhez még hozzáadunk T(2)-t. Páratlan esetben a 3.-at gondolatban kivéve páros esethez jutunk, és az így kapott összidőhöz még T(1)+T(3)-at hozzáadunk.

    És itt van rá egy kész megoldás (ami feltételezem az előző megoldás leírás alapján készült):
    Itt van a hibás megoldás (xls)

    A makró kód a következő:
    Dim N As Integer ' Az átkelni szándékozók száma
    Dim Lap As Object

    Dim S As Long
    Dim Allando As Integer
    Dim I As Integer, J As Integer
    Dim A1 As Integer, A2 As Integer

    Set Lap = Sheets("Alapadatok")

    N = Lap.Cells(1, 1).CurrentRegion.Rows.Count - 1

    Lap.Copy After:=Sheets(Sheets.Count)
    Sheets("Alapadatok (2)").Name = "Átkelés"

    Range(Cells(2, 1), Cells(N + 1, 1)).Select
    Selection.Sort Key1:=Cells(2, 1), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal

    Cells(2, 2).Activate
    A1 = Cells(2, 1).Value
    A2 = Cells(3, 1).Value
    Allando = 2 * A2 + A1
    S = A2
    J = 0
    For I = N + 1 To 5 Step -2
    J = J + 2
    S = S + Allando + Cells(I, 1).Value
    Cells(J, 3).Value = A1 & " + " & A2
    Cells(J, 4).Value = A1
    Cells(J, 5).Value = A1 + A2
    Cells(J + 1, 3).Value = Cells(I - 1, 1).Value & " + " & Cells(I, 1).Value
    Cells(J + 1, 4).Value = A2
    Cells(J + 1, 5).Value = A2 + Cells(I, 1).Value
    Next

    If N Mod 2 = 1 Then
    S = S + Cells(4, 1).Value + Cells(2, 1).Value
    J = J + 2
    Cells(J, 3).Value = A1 & " + " & A2
    Cells(J, 4).Value = A1
    Cells(J, 5).Value = A1 + A2
    Cells(J + 1, 3).Value = A1 & " + " & Cells(4, 1).Value
    Cells(J + 1, 5).Value = Cells(I, 1).Value
    Else
    J = J + 2
    Cells(J, 3).Value = A1 & " + " & A2
    Cells(J, 5).Value = A2
    End If

    Cells(2, 2).Value = S

    End Sub

    Előre is köszönöm a segítséget.

    nem kell ehhez makró, egy cellában ki lehet számolni az eredményt:
    - ha számok mennyiságe = 1, akkor az össz idő = az egy szám lesz
    - ha számok mennyiságe = 2, akkor az össz idő = a nagyobb szám lesz
    - ha számok mennyiságe > 2, akkor az össz idő = az összes idő összege minusz a legrövidebb idő + (az átkelők száma - 2) szorozva a legrövidebb idővel (magyarul saját magán kívül mindenkit átkísér, és utána viszajön amíg van valaki a túlparton)
    Függvényben (kicsit egyszerűsítve):
    =IF(COUNT(A:A)<2; SUM(A:A);(COUNT(A:A)-3)*MIN(A:A)+SUM(A:A))

    AE

  • Taybore
    aktív tag

    Szia!

    Ez Excel biztonsági beállításon múlik, nem a makrón.
    File - Beállítások - Adatvédelmi központ - Adatvédelmi központ beállításai majd innen válogass kedvedre :)

    Ezt már végignyálaztam, de itt nincs (nem találtam) erre vonatkozó beállítási lehetőség(et). :(
    Másrészről időközben kaptam egy tippet, ami be is jött, ezért most ide is közzéteszem, megválaszolva a saját kérdésem mások okulására is:
    http://msdn.microsoft.com/en-us/library/bb209605.aspx
    Ezzel a módszerrel működik :K

  • martonx
    veterán

    Sziasztok!

    Nekem egy olyan problémám van, hogy írtam egy macrot még Excel 2003-ban, ami egyszerűen egy képet szúrt be. Ha ezt elküldtem e-mailben, akkor a fogadó fél is látta a képet, ergo a macro "beágyazta" a képet az xls-be. Ugyanez a macro viszont erre nem hajlandó Excel 2010-ben, ugyanis én látom, hogy milyen képet rakott bele, de nem ágyazza be, és másik számítógépen megnyitva csak egy üres keret jelenik meg piros X-el, és a fájlméret se módosul számottevően. Kb olyan, mintha csak hivatkozna egy külső fájlra, ami ha nincs meg, nem jeleníti meg. Nekem az kéne, hogy ágyazza bele a képet az xls-be, ahogy a 2003-as Excel tette.
    A kód eléggé egyszerű:
    Set fs = CreateObject("Scripting.FileSystemObject")
    If fs.fileexists("c:\Pic\xy.jpg") Then
    ActiveSheet.Pictures.Insert("c:\Pic\xy.jpg").Select
    Selection.ShapeRange.LockAspectRatio = msoTrue
    Selection.ShapeRange.Height = 59.25
    Selection.ShapeRange.Width = 59.25
    End If

    Mi lehet e megoldás? Valami Excel biztonsági beállítás vagy ilyesmi? Lehet, hogy nem a macroval van a baj, hanem az Excel beállítással? Mit nézzek meg, hol keressem?

    Köszi: Norbi

    Szia!

    Ez Excel biztonsági beállításon múlik, nem a makrón.
    File - Beállítások - Adatvédelmi központ - Adatvédelmi központ beállításai majd innen válogass kedvedre :)

  • Taybore
    aktív tag

    Sziasztok!

    Nekem egy olyan problémám van, hogy írtam egy macrot még Excel 2003-ban, ami egyszerűen egy képet szúrt be. Ha ezt elküldtem e-mailben, akkor a fogadó fél is látta a képet, ergo a macro "beágyazta" a képet az xls-be. Ugyanez a macro viszont erre nem hajlandó Excel 2010-ben, ugyanis én látom, hogy milyen képet rakott bele, de nem ágyazza be, és másik számítógépen megnyitva csak egy üres keret jelenik meg piros X-el, és a fájlméret se módosul számottevően. Kb olyan, mintha csak hivatkozna egy külső fájlra, ami ha nincs meg, nem jeleníti meg. Nekem az kéne, hogy ágyazza bele a képet az xls-be, ahogy a 2003-as Excel tette.
    A kód eléggé egyszerű:
    Set fs = CreateObject("Scripting.FileSystemObject")
    If fs.fileexists("c:\Pic\xy.jpg") Then
    ActiveSheet.Pictures.Insert("c:\Pic\xy.jpg").Select
    Selection.ShapeRange.LockAspectRatio = msoTrue
    Selection.ShapeRange.Height = 59.25
    Selection.ShapeRange.Width = 59.25
    End If

    Mi lehet e megoldás? Valami Excel biztonsági beállítás vagy ilyesmi? Lehet, hogy nem a macroval van a baj, hanem az Excel beállítással? Mit nézzek meg, hol keressem?

    Köszi: Norbi

  • Watercolour
    aktív tag

    Üdv,

    segítségeteket kérném Excel VB makróban. A nyelvet nem ismerem, bár sikerült alapszinten megértenem a szintaxisát, viszont a problémám a (matematikai) logikájával van ennek a feladatnak.
    A lényeg az, hogy a feladat megoldása HIBÁS. Magával az algoritmussal van baj, gyanítom az, hogy létezik ennél optimálisabb megoldás.
    A lényeg az lenne, hogy ki kellene javítani optimálisra.
    Fontos lenne, aki tud, kérem nézzen rá. :)

    Adott a következő feladat:
    Adott egy híd, amin N ember át szeretne kelni. Azt tudjuk, hogy nem feltétlenül egyenlő sebességgel képesek haladni. Az egyes emberek átjutásához szükséges időket jelölje T(I). Egyszerre csak ketten tudnak átkelni a hídon. Sötét van, ezért szükségük van egy lámpásra. Leghamarabb mennyi idő alatt tudnak mindnyájan a túlsó partra jutni? (NE feledjük, a lámpást az egyik átjutottnak vissza kell hoznia, hogy a többiek is lássanak az átkelés során!)

    Van hozzá egy megoldás leírása:
    Látható, hogy 3 ember esetén a leggyorsabb bárki mással átmehet, ő jön vissza, és aki még maradt azzal újra átmegy a hídon. Az átkeléshez szükséges idő összesen T(1)+T(2)+(T(3) feltéve, hogy az embereket az átkelés sebessége szerint csökkenőbe (ez időben növekvőt jelent) rendeztük. Azaz pl. átmegy az 1. és a 2. (Idő: T(2)), visszajön az 1. (Idő: T(1)), és végül átmegy az 1. és a 3. (Idő: T(3)). Ha 4 ember van, akkor ez helyesen pl. úgy alakul, hogy: átmegy az 1. és a 2., visszajön az 1., átmegy a 3. és a 4., visszajön a 2., és végül átmegy az 1. és a 2. Észrevehető, hogy az 1. és a 2. tulajdonképpen átjuttatja a 3. és 4. párosát, és ehhez pontosan T(1)+2*T(2)+T(4) időre van szükség. majd végül ők is átmennek (Idő: T(2)). Ha az átkelők száma páros, akkor - az előzőekből helyesen következtetve - úgy tudjuk kiszámolni, hogy mennyi időre van szükség, hogy a leglassúbb idejéből elindulva minden másodikat összegzünk egészen T(4)-ig, és ehhez annyiszor T(1)+2*T(2)-t adunk hozzá, amennyi az átjuttatott párok száma. Végül ehhez még hozzáadunk T(2)-t. Páratlan esetben a 3.-at gondolatban kivéve páros esethez jutunk, és az így kapott összidőhöz még T(1)+T(3)-at hozzáadunk.

    És itt van rá egy kész megoldás (ami feltételezem az előző megoldás leírás alapján készült):
    Itt van a hibás megoldás (xls)

    A makró kód a következő:
    Dim N As Integer ' Az átkelni szándékozók száma
    Dim Lap As Object

    Dim S As Long
    Dim Allando As Integer
    Dim I As Integer, J As Integer
    Dim A1 As Integer, A2 As Integer

    Set Lap = Sheets("Alapadatok")

    N = Lap.Cells(1, 1).CurrentRegion.Rows.Count - 1

    Lap.Copy After:=Sheets(Sheets.Count)
    Sheets("Alapadatok (2)").Name = "Átkelés"

    Range(Cells(2, 1), Cells(N + 1, 1)).Select
    Selection.Sort Key1:=Cells(2, 1), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal

    Cells(2, 2).Activate
    A1 = Cells(2, 1).Value
    A2 = Cells(3, 1).Value
    Allando = 2 * A2 + A1
    S = A2
    J = 0
    For I = N + 1 To 5 Step -2
    J = J + 2
    S = S + Allando + Cells(I, 1).Value
    Cells(J, 3).Value = A1 & " + " & A2
    Cells(J, 4).Value = A1
    Cells(J, 5).Value = A1 + A2
    Cells(J + 1, 3).Value = Cells(I - 1, 1).Value & " + " & Cells(I, 1).Value
    Cells(J + 1, 4).Value = A2
    Cells(J + 1, 5).Value = A2 + Cells(I, 1).Value
    Next

    If N Mod 2 = 1 Then
    S = S + Cells(4, 1).Value + Cells(2, 1).Value
    J = J + 2
    Cells(J, 3).Value = A1 & " + " & A2
    Cells(J, 4).Value = A1
    Cells(J, 5).Value = A1 + A2
    Cells(J + 1, 3).Value = A1 & " + " & Cells(4, 1).Value
    Cells(J + 1, 5).Value = Cells(I, 1).Value
    Else
    J = J + 2
    Cells(J, 3).Value = A1 & " + " & A2
    Cells(J, 5).Value = A2
    End If

    Cells(2, 2).Value = S

    End Sub

    Előre is köszönöm a segítséget.

  • dani850430
    csendes tag

    Ha csak 1-szerű sorbarendezést szeretnél:

    Private Sub Command2_Click()
    Dim rendezendoe As Boolean
    Dim szamlalo As Integer
    Dim temp As String
    Do
    rendezendoe = False
    For szamlalo = 0 To List1.ListCount - 2
    If (List1.List(szamlalo) > List1.List(szamlalo + 1)) Then
    rendezendoe = True
    temp = List1.List(szamlalo)
    List1.List(szamlalo) = List1.List(szamlalo + 1)
    List1.List(szamlalo + 1) = temp
    End If
    Next
    Loop Until rendezendoe = False
    End Sub

    Köszönöm szépen

  • #90999040
    törölt tag

    Sziasztok! VB6-tal kapcsolatban lenne kérdésem. Szeretnék számokat sorba rendezni. Van egy listám(list1), amihez egy gomb segítségével véletlen számokat adok. Egy másik gombbal pedig szeretném növekvő sorrendbe rendezni őket. Arra gondoltam, hogy páronként összehasonlítom az elemeket és az elem indexét kicserélem. Az elméleti megoldásom, hogy egy változóba eltárolom a lista elemek értékét, és ezt egy ciklussal léptetem a listavégig. Egy másik változó lenne az indexek, ami szintén egy ciklusban futna. Ha a k-dik elem kisebb, mint a k+1-dik, akkor a k-dik elem indexe legyen 0. A problémám az, hogy nem tudom összekapcsolni az elem értékét és az indexét. De vhogy sehogy sem akar működni. Tudna vki küldeni programkódot, vagy van vmi egyszerűbb megoldás? Előre is köszönöm.

    Ha csak 1-szerű sorbarendezést szeretnél:

    Private Sub Command2_Click()
    Dim rendezendoe As Boolean
    Dim szamlalo As Integer
    Dim temp As String
    Do
    rendezendoe = False
    For szamlalo = 0 To List1.ListCount - 2
    If (List1.List(szamlalo) > List1.List(szamlalo + 1)) Then
    rendezendoe = True
    temp = List1.List(szamlalo)
    List1.List(szamlalo) = List1.List(szamlalo + 1)
    List1.List(szamlalo + 1) = temp
    End If
    Next
    Loop Until rendezendoe = False
    End Sub

  • dani850430
    csendes tag

    Sziasztok! VB6-tal kapcsolatban lenne kérdésem. Szeretnék számokat sorba rendezni. Van egy listám(list1), amihez egy gomb segítségével véletlen számokat adok. Egy másik gombbal pedig szeretném növekvő sorrendbe rendezni őket. Arra gondoltam, hogy páronként összehasonlítom az elemeket és az elem indexét kicserélem. Az elméleti megoldásom, hogy egy változóba eltárolom a lista elemek értékét, és ezt egy ciklussal léptetem a listavégig. Egy másik változó lenne az indexek, ami szintén egy ciklusban futna. Ha a k-dik elem kisebb, mint a k+1-dik, akkor a k-dik elem indexe legyen 0. A problémám az, hogy nem tudom összekapcsolni az elem értékét és az indexét. De vhogy sehogy sem akar működni. Tudna vki küldeni programkódot, vagy van vmi egyszerűbb megoldás? Előre is köszönöm.

  • #90999040
    törölt tag

    igaz, az sem derült ki pontosan, hogy mit is ért űrlap alatt :))

    Én azért szeretem ezt a megoldást jobban, mert így anélkül lehet inicializálni, hogy az az Excel-ben vizuális felületen megjelenne, valamint nem kell a munkalap elrejtésével sem foglalkozni.

  • martonx
    veterán

    Vagy:

    1. Eszközök >> Makró >> Visual Basic Editor (ill. ALT+F11)
    2. A megjelenő ablakban: Insert >> UserForm

    igaz, az sem derült ki pontosan, hogy mit is ért űrlap alatt :))

  • #90999040
    törölt tag

    Hi!

    valaki tudja, hogy működik a 2010-es excel alatt az ürlapkészítés???
    olyat szeretnék hogy egy listából kiválasztok egy elemet, s egy másik
    listában ettől függően jelennek meg a választható elemek, s végül
    kiíratni az eredményt. :))

    Vagy:

    1. Eszközök >> Makró >> Visual Basic Editor (ill. ALT+F11)
    2. A megjelenő ablakban: Insert >> UserForm

  • martonx
    veterán

    Hi!

    valaki tudja, hogy működik a 2010-es excel alatt az ürlapkészítés???
    olyat szeretnék hogy egy listából kiválasztok egy elemet, s egy másik
    listában ettől függően jelennek meg a választható elemek, s végül
    kiíratni az eredményt. :))

    Ez szerintem momentám minden excelben ugyanúgy működik. Csinálsz egy űrlapnak használt munkalapot, meg egy paraméterek munkalapot. Aztán addig állítgatod, makrózod, míg kész nem leszel.

  • ezredes
    csendes tag

    Hi!

    valaki tudja, hogy működik a 2010-es excel alatt az ürlapkészítés???
    olyat szeretnék hogy egy listából kiválasztok egy elemet, s egy másik
    listában ettől függően jelennek meg a választható elemek, s végül
    kiíratni az eredményt. :))

  • Szerintem ne legyen 'auto edit' jellegű megoldás, ha módosítani akar valaki egy mezőt, akkor kérdezze le a program, hogy az adott mező szerkeszthető-e, és ha igen, akkor zárolja a sort (Tranzakcióban update-eljen egy mezőt, ami a zárolást jelzi, vagy egy másik táblát, amiben a zárolások nyilván vannak tartva).

    Igazából amit keresel, arra nem hiszem, hogy van dobozos megoldás - ráadásul, amit szeretnél az nem is igazán szép.
    Igazi LAN-on (ahol nincs az udp multicast tiltva) elméletileg megoldható egy ilyen megoldás SQL nélkül - UDP multicastba téve a gépeket, ahol mindenki bemondja az éterbe, hogy épp mit csinál. Ám egyrészt az UDP nem megbízható (nincs garancia, hogy mindenki megkapja a csomagot és fel is dolgozza), másrészt egy nagyobb céges hálóban általában szűrve vannak a multicast hívások a VLAN-ok között. Ráadásul ebben az esetben nincs kizárás, tehát elméletileg előfordulhat, hogy "egyszerre" jelenti be mind a két gép a szerkesztést, és vagy mindkettő szerkesztő üzemmódban marad, vagy mindkettőnél letiltódik a szerkesztés (megvalósítástól függően).

    AE

    Meggyőztél! Köszönöm a segítséget és az ötleteket!

  • ArchElf
    addikt

    Ezek nagyon jó ötletek! A Triggeres verzió lesz szerintem, ha nem sikerül SQL nélkül megoldani. Az SQL mellőzését úgy értettem, hogy nem kell folyamatosan letölteni az adatokat, mert nem történik jelentős változás a táblában.

    Például: Egy ListView-ben vannak tárolva hibabejelentések, amiket egy kezelőnek fel kell dolgoznia. De ezt a táblát, amiből a program kiolvasta a listát, több felhasználó is eléri. Ha egy felhasználó elkezd dolgozni az adott hibabejeltéssel (SQL tábla X. sora), akkor a másik gép listájában pl. inaktiválja azt a sort, nem tudja kezelni pl egy duplaklikkel. Az SQL módosítása nem lenne szükséges, csak annak a felhasználónak, aki elkezdett vele dolgozni, ott meg értelem szerűen nem lehet kihagyni a lekérdezéseket.

    Eltekintve az SQL háttérről, az érdekel, hogy hálózaton belül van-e valami megoldás másik gépen lévő, ugyanazon szoftverben található Form-ot módosítani.

    Szerintem ne legyen 'auto edit' jellegű megoldás, ha módosítani akar valaki egy mezőt, akkor kérdezze le a program, hogy az adott mező szerkeszthető-e, és ha igen, akkor zárolja a sort (Tranzakcióban update-eljen egy mezőt, ami a zárolást jelzi, vagy egy másik táblát, amiben a zárolások nyilván vannak tartva).

    Igazából amit keresel, arra nem hiszem, hogy van dobozos megoldás - ráadásul, amit szeretnél az nem is igazán szép.
    Igazi LAN-on (ahol nincs az udp multicast tiltva) elméletileg megoldható egy ilyen megoldás SQL nélkül - UDP multicastba téve a gépeket, ahol mindenki bemondja az éterbe, hogy épp mit csinál. Ám egyrészt az UDP nem megbízható (nincs garancia, hogy mindenki megkapja a csomagot és fel is dolgozza), másrészt egy nagyobb céges hálóban általában szűrve vannak a multicast hívások a VLAN-ok között. Ráadásul ebben az esetben nincs kizárás, tehát elméletileg előfordulhat, hogy "egyszerre" jelenti be mind a két gép a szerkesztést, és vagy mindkettő szerkesztő üzemmódban marad, vagy mindkettőnél letiltódik a szerkesztés (megvalósítástól függően).

    AE

  • SQL lekérdezés nélkül nem nagyon megy... Honnan tudja a kliens, hogy más is nézi azt a view-t? Ha sok adat van a view-ban és nem akarsz folyton mindent lekérdezni, akkor egy ID mezőre le lehet mondjuk kérdezni egy SELECT Max(ID) FROM View -val, hogy van-e újabb rekord, vagy ha frissülhetnek a mezők, akkor legyen a táblában egy TimeStamp mező (DateTime) ami frissítéskor frissül és akkor a SELECT Max(TimeStamp) FROM View-val megnézni, hogy van-e újabb adat. Esetleg csinálni egy Triggert, ami UPDATE/INSERT/DELETE-re frissít egy DateTime mezőt egy külön státusz táblában...
    Szóval lekérdezés nélkül nekem semmi nem jut az eszembe, lekérdezésekkel, meg a fentiek.

    AE

    Ezek nagyon jó ötletek! A Triggeres verzió lesz szerintem, ha nem sikerül SQL nélkül megoldani. Az SQL mellőzését úgy értettem, hogy nem kell folyamatosan letölteni az adatokat, mert nem történik jelentős változás a táblában.

    Például: Egy ListView-ben vannak tárolva hibabejelentések, amiket egy kezelőnek fel kell dolgoznia. De ezt a táblát, amiből a program kiolvasta a listát, több felhasználó is eléri. Ha egy felhasználó elkezd dolgozni az adott hibabejeltéssel (SQL tábla X. sora), akkor a másik gép listájában pl. inaktiválja azt a sort, nem tudja kezelni pl egy duplaklikkel. Az SQL módosítása nem lenne szükséges, csak annak a felhasználónak, aki elkezdett vele dolgozni, ott meg értelem szerűen nem lehet kihagyni a lekérdezéseket.

    Eltekintve az SQL háttérről, az érdekel, hogy hálózaton belül van-e valami megoldás másik gépen lévő, ugyanazon szoftverben található Form-ot módosítani.

  • ArchElf
    addikt

    Teljesen igazad van, nem a proxy volt a hiba, valamit nagyon elnéztem... A linkeket köszönöm, későbbiekben még jól fognak jönni!

    Olyat meg lehet oldani, hogy van egy program, ami fel van telepítve pl 4 gépre és egy szerverre kommunikál. A szerver egy sima SQL szerver, amiből adatokat nyerek ki, vagy törlök. Mindegyik programban van egy pl. ListView ami az SQL lekérdezés eredményeit tartalmazza. A feladat az lenne, ha az egyik gépről törlök az SQL-ből, akkor a többin is módosítsa a ListView tartalmát új SQL lekérdezés nélkül? Ez első sorban LAN-on lenne érdekes, de előfordulhat már IP címen lévő, egymástól távol lévő gépekkel is.

    Valakinek valami ötlete van erre?

    SQL lekérdezés nélkül nem nagyon megy... Honnan tudja a kliens, hogy más is nézi azt a view-t? Ha sok adat van a view-ban és nem akarsz folyton mindent lekérdezni, akkor egy ID mezőre le lehet mondjuk kérdezni egy SELECT Max(ID) FROM View -val, hogy van-e újabb rekord, vagy ha frissülhetnek a mezők, akkor legyen a táblában egy TimeStamp mező (DateTime) ami frissítéskor frissül és akkor a SELECT Max(TimeStamp) FROM View-val megnézni, hogy van-e újabb adat. Esetleg csinálni egy Triggert, ami UPDATE/INSERT/DELETE-re frissít egy DateTime mezőt egy külön státusz táblában...
    Szóval lekérdezés nélkül nekem semmi nem jut az eszembe, lekérdezésekkel, meg a fentiek.

    AE

  • Ez talán egy kicsit kisegít:
    http:
    //stackoverflow.com/questions/844835/sending-mail-throught-http-proxy

    Amúgy röviden csak annyit, hogy a HTTP proxy-nak semmi köze nincs az SMTP-hez. Ha céges hálózatban vagy és nem megy ki az SMTP, akkor az nem a proxy/kliens hibája, hanem a tűzfalon van letiltva a kimenő SMTP. Amennyiben mégis szeretnél valamiért HTTP-n keresztül "kimenni" úgy pl. azt a megoldást tudom ajánlani, amint a mi a fent linkelt eszélgetés végén található - persze céges hálózaton ez nagy valószínűség szerint a helyi szabályokba ütközik..

    És még ezt találtam neked: http://www.lesnikowski.com/blog/index.php/tag/mail-dll/

    AE

    Teljesen igazad van, nem a proxy volt a hiba, valamit nagyon elnéztem... A linkeket köszönöm, későbbiekben még jól fognak jönni!

    Olyat meg lehet oldani, hogy van egy program, ami fel van telepítve pl 4 gépre és egy szerverre kommunikál. A szerver egy sima SQL szerver, amiből adatokat nyerek ki, vagy törlök. Mindegyik programban van egy pl. ListView ami az SQL lekérdezés eredményeit tartalmazza. A feladat az lenne, ha az egyik gépről törlök az SQL-ből, akkor a többin is módosítsa a ListView tartalmát új SQL lekérdezés nélkül? Ez első sorban LAN-on lenne érdekes, de előfordulhat már IP címen lévő, egymástól távol lévő gépekkel is.

    Valakinek valami ötlete van erre?

  • ArchElf
    addikt

    Helló!

    Tudtok ajánlani valami jó, ingyenes smtp komponenst, amit használhatnék vb.net alatt? A system.net.mail-t nem tudom rávenni, hogy proxy mögül elküldje az üzeneteket.

    Köszönöm!

    Ez talán egy kicsit kisegít:
    http:
    //stackoverflow.com/questions/844835/sending-mail-throught-http-proxy

    Amúgy röviden csak annyit, hogy a HTTP proxy-nak semmi köze nincs az SMTP-hez. Ha céges hálózatban vagy és nem megy ki az SMTP, akkor az nem a proxy/kliens hibája, hanem a tűzfalon van letiltva a kimenő SMTP. Amennyiben mégis szeretnél valamiért HTTP-n keresztül "kimenni" úgy pl. azt a megoldást tudom ajánlani, amint a mi a fent linkelt eszélgetés végén található - persze céges hálózaton ez nagy valószínűség szerint a helyi szabályokba ütközik..

    És még ezt találtam neked: http://www.lesnikowski.com/blog/index.php/tag/mail-dll/

    AE

  • Jaaa, hogy így. Így működik, valamiért akkor nem működik, ha két külön file-ról beszélünk, és a textarea tartalmát argument-ként akarom átadni. Nekem viszont elég fontos lenne, hogy két külön file legyen :B

    Helló!

    Tudtok ajánlani valami jó, ingyenes smtp komponenst, amit használhatnék vb.net alatt? A system.net.mail-t nem tudom rávenni, hogy proxy mögül elküldje az üzeneteket.

    Köszönöm!

  • ArchElf
    addikt

    Sziasztok,

    A következő problémám lenne.
    Adott egy type változó
    Public Type PkData
    PlayerName As String
    PlayerID As Integer
    Seat As String
    ...
    end type

    majd ezt használom tömbként
    Dim Px(1 To 10) As PkData

    ilyen esetben hogyan tudom a px tömböt kiüríteni??? :F
    mert ugye Px.playername... stb változóim vannak. És kb 30 változó van a típusban definiálva.
    Egyessével nagyon macerás lenne

    Csinálsz szerintem egy szimpla PKData definíciót, és az összes PX-tömbelemnek add azt értékül:
    'Px Kiürítése
    Dim EmptyPkData as PkData
    For ix = 1 to UBound(Px)
    Px(ix) = EmptyPkData
    Next ix

    mod: Mivel a VB6 automatikusan inicializál, így az EmptyPkData biztos, hogy üres lesz, az értékadásnál pedig egyszerűen felülírja a régi értéket (és mivel value type, nem pedig class, így nem ugyanarra az objektumra fog hivatkozni az összes tömbelem - az egyetlen gondot az jelentheti, ha a type definíció osztályokat is tartalmaz).

    AE

  • sonar
    addikt

    Sziasztok,

    A következő problémám lenne.
    Adott egy type változó
    Public Type PkData
    PlayerName As String
    PlayerID As Integer
    Seat As String
    ...
    end type

    majd ezt használom tömbként
    Dim Px(1 To 10) As PkData

    ilyen esetben hogyan tudom a px tömböt kiüríteni??? :F
    mert ugye Px.playername... stb változóim vannak. És kb 30 változó van a típusban definiálva.
    Egyessével nagyon macerás lenne

  • martonx
    veterán

    A probléma megoldódott, akit esetleg érdekel, ez alapján csináltam.

    Engem az érdekel mire volt jó mindez? VB alatt titkosítani valamit? Mi lett ettől biztonságosabb? Vagy fájl alapú adattárolást használt valaki? Csak erre tudok gondolni. De ez a gondolat meg elég valószerűtlen, így 2011-ben amikor már mindenki adatbázist használ.
    Ha meg már ott a VB.Net minek a PHP?
    Eh mindegy, sok kérdés felmerült bennem, igaziból egyedül a konkrét megoldás nem érdekelt :DDD

  • Helló!

    Van valakinek tapasztalata, hogy lehetne megoldani, hogy egy VB programmal titkosított fájlt php alatt mcryptel visszafejtsek? Az mcrypt string IV-t és kulcsot kér, a VB byte-t. Rijndael-128-al próbálkozom.

    Köszönöm!

    A probléma megoldódott, akit esetleg érdekel, ez alapján csináltam.

  • Helló!

    Van valakinek tapasztalata, hogy lehetne megoldani, hogy egy VB programmal titkosított fájlt php alatt mcryptel visszafejtsek? Az mcrypt string IV-t és kulcsot kér, a VB byte-t. Rijndael-128-al próbálkozom.

    Köszönöm!

  • martonx
    veterán

    Üdv kedves fórumozók!

    Tudja netán valaki hogy PictureBox-ot miképp tudok elővarázsolni excel-ben. Függvényt szeretnék rajzoltatni bele, de nem találom a vezérlők közt (vagy nem tudom milyen néven kellene látnom). Ha nincs ilyen a gépen, akkor honnan tudom beszerezni?

    Szép napot!

    Image Control néven fut Excel makrón belül a Picturebox.

    Ha erre gondoltál. Ha nem látod valami miatt a Toolbox-ban, akkor felül Tools menü - Additional Controls, majd itt bepipálod a Microsoft Forms - Image -t.

  • Üdv kedves fórumozók!

    Tudja netán valaki hogy PictureBox-ot miképp tudok elővarázsolni excel-ben. Függvényt szeretnék rajzoltatni bele, de nem találom a vezérlők közt (vagy nem tudom milyen néven kellene látnom). Ha nincs ilyen a gépen, akkor honnan tudom beszerezni?

    Szép napot!

  • TakkerX
    aktív tag

    Szia!

    Van egy olyan esemény, hogy beforesave vagy valami ilyesmi a neve. Ez akkor indul, amikor rányom a mentés gombra.
    Ebbe rakd be a zárolós kódrészt, és készen is vagy.

    köszönöm, kipróbálom!

  • martonx
    veterán

    sziasztok, remélem jó helyre írok, vba script lenne excelben.

    eléggé amatőr vagyok benne, az szeretném megcsinálni, hogy miután a felhasználó lementette a fájlt, akkor azokat a cellákat amik adatot tartalmaznak, zárja le. és csak jelszóval lehessen ezt feloldani. Lapvédelem be van állítva, az üres cellák alapesetben nem zároltak ugye.
    az megvan, hogy rögtön az adat beviltel után lezárja a cellát. így:

    Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Unprotect ("password")
    Target.Locked = True
    ActiveSheet.Protect ("password")
    End Sub

    de én úgy szeretném, hogy csak mentéskor zárja le. lehetséges?:)

    Szia!

    Van egy olyan esemény, hogy beforesave vagy valami ilyesmi a neve. Ez akkor indul, amikor rányom a mentés gombra.
    Ebbe rakd be a zárolós kódrészt, és készen is vagy.

  • TakkerX
    aktív tag

    sziasztok, remélem jó helyre írok, vba script lenne excelben.

    eléggé amatőr vagyok benne, az szeretném megcsinálni, hogy miután a felhasználó lementette a fájlt, akkor azokat a cellákat amik adatot tartalmaznak, zárja le. és csak jelszóval lehessen ezt feloldani. Lapvédelem be van állítva, az üres cellák alapesetben nem zároltak ugye.
    az megvan, hogy rögtön az adat beviltel után lezárja a cellát. így:

    Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Unprotect ("password")
    Target.Locked = True
    ActiveSheet.Protect ("password")
    End Sub

    de én úgy szeretném, hogy csak mentéskor zárja le. lehetséges?:)

  • martonx
    veterán

    Sziasztok!

    Segítséteket kérem! Excelben (2003-as) munkalapot szeretnék menteni olyan módon, hogy adott napon adott munkafüzetben nyisson egy-egy új munkalapot az általam megadott névvel. ( Tulajdonképpen anyag mentéséről lenne szó, de külön munkafüzetbe és ott a megadott névvel új lapot kellene nyitnia.) :W
    Köszönöm!

    Arra gondolsz, hogy van egy A nevű exceled, ebben megnyomod a mentés gombot, és ekkor jelenjen meg és mentődjön le egy B nevű exceled az általad megadott névvel.
    B-nek egy munkafüzete legyen, annak a neve a mai dátum?
    És mi legyen B egyetlen munkafüzetében? Vagy ez üres legyen?
    Ahányszor rányomsz a mentés gombra mindig ez játszódjon le, vagy csak naponta egyszer?

    Annyiszor le van fentebb írva, hogy értelmesen fogalmazzátok meg, hogy mit akartok, mert ezek abszolút nem triviális kérdések, még ha te magad érted is, hogy mit akarsz, ahhoz hogy segíthessünk, nekünk is meg kell érteni téged.

  • opapa
    csendes tag

    Sziasztok!

    Segítséteket kérem! Excelben (2003-as) munkalapot szeretnék menteni olyan módon, hogy adott napon adott munkafüzetben nyisson egy-egy új munkalapot az általam megadott névvel. ( Tulajdonképpen anyag mentéséről lenne szó, de külön munkafüzetbe és ott a megadott névvel új lapot kellene nyitnia.) :W
    Köszönöm!

  • martonx
    veterán

    JAJ!
    Igen, Excel tábla.
    Igen, bármelyiket jelölöm ki de nem az aktuálisan kijelölt cella értékét akarom látni hanem mondjuk a 15. oszlopban lévő azon cella értékét amelyik sorban éppen az aktív cella van.
    boro

    A sok félrebeszéd helyett inkább küldök egy megoldást:

    elkapod az adott munkalap cella kijelölés eseményét, és abba beleírod az alábbi sort:

    Range("A1").Value = Cells(ActiveCell.Row, 15)

    Ahol a 15 - annak az oszlopnak a száma, amelyiknek az értékét az A1-ben látni akarod.

    A fenti párbeszédünkre való tekintettel, inkább leírom a komplett 3 sort, ami kell nekünk:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range("A1").Value = Cells(ActiveCell.Row, 15)
    End Sub

  • borovszkyg
    csendes tag

    Jól értem, hogy ennyit akarsz:

    Excel tábláról beszélünk (ugye???), és bármely cellát jelölöm ki, annak az értékét látni akarom az A1 cellában. Ennyi???

    Mert akkor ez könnyen megoldható.

    JAJ!
    Igen, Excel tábla.
    Igen, bármelyiket jelölöm ki de nem az aktuálisan kijelölt cella értékét akarom látni hanem mondjuk a 15. oszlopban lévő azon cella értékét amelyik sorban éppen az aktív cella van.
    boro

  • martonx
    veterán

    Megpróbálom.
    A fix cella legyen pl. az A1-es. Ezt a cellát az ablaktablábla rögzítése segítségével mindig látom. Ebben a cellában kellene megjelennie egy fix oszlop azon sorának értéke, amelyik sorban éppen az aktív cella található. Ahogy mozgatom az egérrel vagy a nyilakkal az aktív cella kijelölését úgy változik az A1 cellában az érték. A lényeg, hogy egy nagy táblázat előre meghatározott fix oszlopából mindig lássam az aktív cella sorának értékét. boro

    Jól értem, hogy ennyit akarsz:

    Excel tábláról beszélünk (ugye???), és bármely cellát jelölöm ki, annak az értékét látni akarom az A1 cellában. Ennyi???

    Mert akkor ez könnyen megoldható.

  • borovszkyg
    csendes tag

    Ha érthetően leírod, hogy mit akarsz, akkor biztos tudunk segíteni.

    Megpróbálom.
    A fix cella legyen pl. az A1-es. Ezt a cellát az ablaktablábla rögzítése segítségével mindig látom. Ebben a cellában kellene megjelennie egy fix oszlop azon sorának értéke, amelyik sorban éppen az aktív cella található. Ahogy mozgatom az egérrel vagy a nyilakkal az aktív cella kijelölését úgy változik az A1 cellában az érték. A lényeg, hogy egy nagy táblázat előre meghatározott fix oszlopából mindig lássam az aktív cella sorának értékét. boro

  • martonx
    veterán

    Sziasztok!
    Szeretném megoldani, hogy egy fix cellában mindíg annak a sornak egy oszlopából legyen adat kijelezve amelyik sorban épp az aktív cella áll. Ez megoldható?
    Köszönöm: boro

    Ha érthetően leírod, hogy mit akarsz, akkor biztos tudunk segíteni.

  • borovszkyg
    csendes tag

    Sziasztok!
    Szeretném megoldani, hogy egy fix cellában mindíg annak a sornak egy oszlopából legyen adat kijelezve amelyik sorban épp az aktív cella áll. Ez megoldható?
    Köszönöm: boro

  • martonx
    veterán

    Sziasztok!

    VB6.0-t használok. Adatbázisok tárgy keretében irtam egy progit, ami egy access adatbázisból szed ki adatok, és helyez el textboxokban, hogy aztán ezekkel számításokat végezzen a program.(tengely méretező program.) Ez igy néz ki:
    Dim cn As New ADODB.Connection
    Dim Qy As New ADODB.Command
    Dim rs As New ADODB.Recordset
    Dim Ta As New BindingCollection
    Dim Tav As New BindingCollection
    Dim Szija As New BindingCollection
    Dim Tt As New BindingCollection
    Dim Szt As New BindingCollection

    Private Sub Command1_Click()
    cn.Close
    End Sub

    Private Sub Form_Load()
    cn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0 ;User ID=;Data Source=" + App.Path + "\anyagok.mdb;"
    cn.Open
    Set Qy.ActiveConnection = cn
    Qy.CommandText = "SELECT * FROM tengely"
    rs.CursorLocation = adUseClient
    rs.Open Qy, , adOpenDynamic, adLockBatchOptimistic
    Set DataGrid1.DataSource = rs
    DataGrid1.Refresh
    Set Ta.DataSource = rs
    Ta.Add Form1.Text6, "Text", "Tengely atmero"
    Set Tav.DataSource = rs
    Tav.Add Form1.Text7, "Text", "Tavolsag"
    Set Szija.DataSource = rs
    Szija.Add Form1.Text5, "Text", "Szijtarcsa atmero"
    Set Tt.DataSource = rs
    Tt.Add Form1.Text4, "Text", "Tengely tomeg"
    Set Szt.DataSource = rs
    Szt.Add Form1.Text3, "Text", "Szijtarcsa tomeg"
    End Sub

    Az lenne a kérdésem, hogy működik e dolog visszafele? Arra gondolok, hogy textboxok tartalmát kiirja egy adatbázisba. Mondjuk van 3 textboxom, amikbe a program futása során végzett számítások eredménye van. És ezeket szeretném egy adatbázis megfelelő oszlopaiba beirni. Illetve, ha ez megvan, hogyan tudom elérni, hogy az adatbázis sorait léptesse, illetve, hogy mentse el?

    Előre is köszönöm a segítséget

    Az biztos, hogy működik a dolog visszafelé is, INSERT sql paranccsal tudsz az adatbázisodba adatokat írni.

    Léptetést rs.next-el tudsz csinálni, ha jól sejtem, vagy valami ilyesmivel, sose használtam VB6-ot.

  • dani850430
    csendes tag

    Sziasztok!

    VB6.0-t használok. Adatbázisok tárgy keretében irtam egy progit, ami egy access adatbázisból szed ki adatok, és helyez el textboxokban, hogy aztán ezekkel számításokat végezzen a program.(tengely méretező program.) Ez igy néz ki:
    Dim cn As New ADODB.Connection
    Dim Qy As New ADODB.Command
    Dim rs As New ADODB.Recordset
    Dim Ta As New BindingCollection
    Dim Tav As New BindingCollection
    Dim Szija As New BindingCollection
    Dim Tt As New BindingCollection
    Dim Szt As New BindingCollection

    Private Sub Command1_Click()
    cn.Close
    End Sub

    Private Sub Form_Load()
    cn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0 ;User ID=;Data Source=" + App.Path + "\anyagok.mdb;"
    cn.Open
    Set Qy.ActiveConnection = cn
    Qy.CommandText = "SELECT * FROM tengely"
    rs.CursorLocation = adUseClient
    rs.Open Qy, , adOpenDynamic, adLockBatchOptimistic
    Set DataGrid1.DataSource = rs
    DataGrid1.Refresh
    Set Ta.DataSource = rs
    Ta.Add Form1.Text6, "Text", "Tengely atmero"
    Set Tav.DataSource = rs
    Tav.Add Form1.Text7, "Text", "Tavolsag"
    Set Szija.DataSource = rs
    Szija.Add Form1.Text5, "Text", "Szijtarcsa atmero"
    Set Tt.DataSource = rs
    Tt.Add Form1.Text4, "Text", "Tengely tomeg"
    Set Szt.DataSource = rs
    Szt.Add Form1.Text3, "Text", "Szijtarcsa tomeg"
    End Sub

    Az lenne a kérdésem, hogy működik e dolog visszafele? Arra gondolok, hogy textboxok tartalmát kiirja egy adatbázisba. Mondjuk van 3 textboxom, amikbe a program futása során végzett számítások eredménye van. És ezeket szeretném egy adatbázis megfelelő oszlopaiba beirni. Illetve, ha ez megvan, hogyan tudom elérni, hogy az adatbázis sorait léptesse, illetve, hogy mentse el?

    Előre is köszönöm a segítséget

  • #10382336
    törölt tag

    A httpwebrequest, httpwebclient - el pár napja kísérletezgettem weboldalon lévő fájlok letöltése kapcsán, de ezzel én csak .html fájlt tudtam létrhozni, amire rákattintva megnyilt az alapértelmezett böngésző(firefox), ami a letöltendő fájlra mutatott és feldobta a mentés másként ablakot, amivel le tudtam tölteni.
    Mivel azonban ehhez kattintgatni is kell, és én közvetlenül .net -ből akartam letölteni, ezért a httpwebrequest,httpwebclient -el való kísérletezést végül abbahagytam.
    A webclient-el egyszer a Form-ra is sikerült rávarázsolnom egy bizonyos weboldalt.
    Akkor végül is az egyszerű My.Computer.Network.DownloadFile() eljárás oldotta meg a problémámat.
    Ezek szerint ismét vissza kell térnem ezekhez az objektumokhoz és tovább kísérletezgetni velük.

    köszi a javaslatokat.

    A következőképpen sikerült megoldani:

    1: A táblázatot tartalmazó .html fájl letöltése a helyi gépre:
    My.Computer.Network.DownloadFile(forrashtml, celfajl, felhasznalonev, jelszo, False, 10000000, True)

    2: A letöltött fájl beolvasása egy stringbe:
    Dim s0 As String = Join(System.IO.File.ReadAllLines(celfajl, System.Text.Encoding.Default), "")

    3: A stringből a tabulátor - chr(9) - karakterek kitörlése.

    4: A string átalakítása úgy, hogy egy sor vagy egy tag-ot, vagy egy szövegsort tartalmazzon.
    Ezek után egy sor vagy így néz ki: "<tagnév tagtulajdonságok>"+vbcrlf ,
    vagy így: "szöveg"+vbcrlf
    így el lehet dönteni, hogy egy sor mit tartalmaz, ha a sor első karaktere "<" akkor tag,
    egyébként szöveg.

    5: Ezek után "csak" fel kell dolgozni a sorokat a táblázat parancsai szerint:
    <table> </table> - új táblázat, ill. táblázat vége
    <tr> </tr> - következő sor, sor vége
    <th> </th> - aktuális sor köv. oszlopának fejlécének kezdete/vége
    <td> </td> - akt. sor köv. oszlopának eleme.
    Minden más tag figyelmen kívűl hagyandó. A <th> tag-nál azonban még arra figyelni
    kell, hogy <th colspan="2"> az adott sorban két cella egyesítését jelenti.

    A próba során célobjektumnak "datagrid" -et használtam, amit "datagridview" -el
    írattam ki a "form" -ra. Összehasonlítva az eredeti weboldallal az adatok megegyeztek.

    Ez a megoldás valószínűleg nem a legegyszerűbb, azonban működik.
    Ha valakinek van egyszerűbb megoldása, nem sértődnék meg, ha leírná.

    KELLEMES ÜNNEPEKET MINDENKINEK!!!

  • #10382336
    törölt tag

    Hali!

    Két megoldási utat látok.

    1. Watin-t használsz, ezzel egyszerűen, könnyen lehet böngészőt automatizálni. Javascript szerűen (teljes .net) ki tudod vele szedni az adatokat a HTML DOM-ból. Viszont nem túl elegáns módszer villogtatni a böngészőt, az adatok kinyerésekor. Kérdés mennyire lényeges az elegancia?
    2. Használd a httpwebrequest, httpwebclient osztályokat. Na, ezekkel nincs semmi tapasztalatom, viszont brutál jó dolgokat lehet velük csinálni, aki ért hozzájuk. A webes játékokhoz a botokat is ezekkel az osztályokkal csinálják a hardcore gamerek :)) A PHUpper is ezekkel működik. Nagyon elegáns ezeket az osztályokat használni, viszont sok tanulást utánajárást igényel, mire beletanulsz.

    Ha van időd a feladatra, akkor mindenképpen a 2-es megoldást javaslom. Ha csak gyorsan össze kell dobni egy működőképes megoldást, akkor az 1-est.

    A httpwebrequest, httpwebclient - el pár napja kísérletezgettem weboldalon lévő fájlok letöltése kapcsán, de ezzel én csak .html fájlt tudtam létrhozni, amire rákattintva megnyilt az alapértelmezett böngésző(firefox), ami a letöltendő fájlra mutatott és feldobta a mentés másként ablakot, amivel le tudtam tölteni.
    Mivel azonban ehhez kattintgatni is kell, és én közvetlenül .net -ből akartam letölteni, ezért a httpwebrequest,httpwebclient -el való kísérletezést végül abbahagytam.
    A webclient-el egyszer a Form-ra is sikerült rávarázsolnom egy bizonyos weboldalt.
    Akkor végül is az egyszerű My.Computer.Network.DownloadFile() eljárás oldotta meg a problémámat.
    Ezek szerint ismét vissza kell térnem ezekhez az objektumokhoz és tovább kísérletezgetni velük.

    köszi a javaslatokat.

  • martonx
    veterán

    No ezt a COM-ot szeretném kihagyni. Tulajdonképpen ha a böngészőkből kiadom a
    Internet explorer esetén a Fájl - Mentés másként...
    Firefox esetén a Fájl - Oldal mentése
    parancsot, és szövegfájlként mentem, majdnem ugyanazt az eredményt érem el, azzal a külnbséggel, hogy így a weboldal nem csak a táblázatot adja vissza (mint az excel -nél), hanem az egész oldalt.

    Ezért érdekelne, hogy .NET-ből hogyan lehet ezt megcsinálni.
    Erre a httpwebclient alkalmas?

    Hali!

    Két megoldási utat látok.

    1. Watin-t használsz, ezzel egyszerűen, könnyen lehet böngészőt automatizálni. Javascript szerűen (teljes .net) ki tudod vele szedni az adatokat a HTML DOM-ból. Viszont nem túl elegáns módszer villogtatni a böngészőt, az adatok kinyerésekor. Kérdés mennyire lényeges az elegancia?
    2. Használd a httpwebrequest, httpwebclient osztályokat. Na, ezekkel nincs semmi tapasztalatom, viszont brutál jó dolgokat lehet velük csinálni, aki ért hozzájuk. A webes játékokhoz a botokat is ezekkel az osztályokkal csinálják a hardcore gamerek :)) A PHUpper is ezekkel működik. Nagyon elegáns ezeket az osztályokat használni, viszont sok tanulást utánajárást igényel, mire beletanulsz.

    Ha van időd a feladatra, akkor mindenképpen a 2-es megoldást javaslom. Ha csak gyorsan össze kell dobni egy működőképes megoldást, akkor az 1-est.

  • #10382336
    törölt tag

    ez bizony. És ehhez kell excel, különben nem lesz a gépeden Excel application objektum.

    No ezt a COM-ot szeretném kihagyni. Tulajdonképpen ha a böngészőkből kiadom a
    Internet explorer esetén a Fájl - Mentés másként...
    Firefox esetén a Fájl - Oldal mentése
    parancsot, és szövegfájlként mentem, majdnem ugyanazt az eredményt érem el, azzal a külnbséggel, hogy így a weboldal nem csak a táblázatot adja vissza (mint az excel -nél), hanem az egész oldalt.

    Ezért érdekelne, hogy .NET-ből hogyan lehet ezt megcsinálni.
    Erre a httpwebclient alkalmas?

  • martonx
    veterán

    Amikor azt írod, hogy COM-on keresztül, akkor pontosan mire gondolsz? Én ezt úgy oldom meg, hogy:

    dim Xls as new Object
    Xls = CreateObject("Excel.application")

    Ez lenne az a bizonyos COM?

    ez bizony. És ehhez kell excel, különben nem lesz a gépeden Excel application objektum.

  • #10382336
    törölt tag

    1. Nem.
    2. Ha mégis telepítve van, akkor le tudod menteni a kapott eredményt bármibe, amibe az exceled menteni tud. .net-el tudod COM-on keresztülhasználni az excelt, azaz a felhasználó nem is látja, hogy te excelt hívogatsz a háttérben.

    Ha pusztán .net-tel akarsz megoldani valamilyen feladatot, talán egyszerűbb lenne, ha elárulnád mi az a feladat, és mi elmondjuk a javaslatainkat.
    Például ebben az esetben a httpwebclient és a httpwebrequest osztályok használatát javaslom inkább, ha az elvira oldalát akarod automatizáltan hívogatni valami .net-es alkalmazásból.

    Amikor azt írod, hogy COM-on keresztül, akkor pontosan mire gondolsz? Én ezt úgy oldom meg, hogy:

    dim Xls as new Object
    Xls = CreateObject("Excel.application")

    Ez lenne az a bizonyos COM?

  • martonx
    veterán

    Sziasztok!

    2 egymással összefüggő kérdésem lenne:

    1: Lehetséges-e az "Excel" "Weblekérdezés" parancsát végrehajtó eljárást vagy függvényt írni csak .net -ben úgy, hogy az "Excel" nincs telepítve?

    2: Ha igen, akkor ezt milyen objektumba / fájlba a legegyszerűbb ("datagrid"/szövegfájl???), és hogyan? (erről elképzelésem sincs).

    A konkrét weblekérdezés jelen esetben:
    Workbooks(Xlsnev).Sheets("Szeged").QueryTables.Add(Connection:= _
    "URL;http://elvira.mavinformatika.hu/elvira.dll/AF?a=szeged" _
    , Destination:=Workbooks(Xlsnev).Sheets("Szeged").Range("A1"))

    Természetesen az "Excel" telepítve van, de a kérdésben azért ilyen sarkosan fogalmaztam, mert a feladatot csak .net -el szeretném megoldani.

    1. Nem.
    2. Ha mégis telepítve van, akkor le tudod menteni a kapott eredményt bármibe, amibe az exceled menteni tud. .net-el tudod COM-on keresztülhasználni az excelt, azaz a felhasználó nem is látja, hogy te excelt hívogatsz a háttérben.

    Ha pusztán .net-tel akarsz megoldani valamilyen feladatot, talán egyszerűbb lenne, ha elárulnád mi az a feladat, és mi elmondjuk a javaslatainkat.
    Például ebben az esetben a httpwebclient és a httpwebrequest osztályok használatát javaslom inkább, ha az elvira oldalát akarod automatizáltan hívogatni valami .net-es alkalmazásból.

  • #10382336
    törölt tag

    Sziasztok!

    2 egymással összefüggő kérdésem lenne:

    1: Lehetséges-e az "Excel" "Weblekérdezés" parancsát végrehajtó eljárást vagy függvényt írni csak .net -ben úgy, hogy az "Excel" nincs telepítve?

    2: Ha igen, akkor ezt milyen objektumba / fájlba a legegyszerűbb ("datagrid"/szövegfájl???), és hogyan? (erről elképzelésem sincs).

    A konkrét weblekérdezés jelen esetben:
    Workbooks(Xlsnev).Sheets("Szeged").QueryTables.Add(Connection:= _
    "URL;http://elvira.mavinformatika.hu/elvira.dll/AF?a=szeged" _
    , Destination:=Workbooks(Xlsnev).Sheets("Szeged").Range("A1"))

    Természetesen az "Excel" telepítve van, de a kérdésben azért ilyen sarkosan fogalmaztam, mert a feladatot csak .net -el szeretném megoldani.

  • bandus
    veterán

    Ugye VB.NET-ről beszélünk? Mert ha igen, akkor elküldheted a kódod. Megoldás szempontjából végülis mindegy, hogy .Net vagy nem.

    Ha már megvan a mini adatbázisod, és a csv-d, akkor olvasd be csvből az adatokat, majd azokon végiglépdelve, amit nem találsz meg az adatbázisodban, azt beletöltöd.

    Amúgy, ahhoz nem kell csv-hogy excellel kezeld az adatokat, sima COM objektumon keresztül tudsz kommunikálni az excellel. Ezt sokkal elegánsabbnak tartanám.

    Vagy csinálsz egy excel makrót, ami szintén beleír az adatbázisodba :)

    BME-n már ilyen szakdolgozatokért is adnak diplomát? :F

    akkor elküldöm az adatlapodon található mailcímr, nagyon hálás lennék ha megnéznéd :R

    a szakdolgozatomnak amúgy ehhez semmi köze, teljesen más téma. ez még egy 2. félévről visszamaradt programtervezés c. tárgy, amit eddig nem volt idő megcsinálni. amúgy ez az utolsó félév amikor oktatnak még visual basicet, jövőre már csak c-t.

  • martonx
    veterán

    hát egy rekord fájlban tároljuk az adatokat (mini adatbázis) és ezeket exportáljuk egy csv fájlba, hogy azt excellel is tudjuk kezelni. és azt kellene megoldani, hogy ha az így kiimportált .csv-t megnyitjuk excellel, és hozzáírunk még néhány rekordot (ami 3 mezőből áll) akkor azokat be tudjuk importálni a programfelületen keresztül a rekord típusú fájlunkba. szerintem is hülyeség, mivel a programmal simán hozzá tudjuk adni. nade ezen a hülye tárgyon múlik, hogy mehessek államvizsgázni, muszáj összekapnom magam. ha gondolod el tudom küldeni az eddigi programot..:)

    Ugye VB.NET-ről beszélünk? Mert ha igen, akkor elküldheted a kódod. Megoldás szempontjából végülis mindegy, hogy .Net vagy nem.

    Ha már megvan a mini adatbázisod, és a csv-d, akkor olvasd be csvből az adatokat, majd azokon végiglépdelve, amit nem találsz meg az adatbázisodban, azt beletöltöd.

    Amúgy, ahhoz nem kell csv-hogy excellel kezeld az adatokat, sima COM objektumon keresztül tudsz kommunikálni az excellel. Ezt sokkal elegánsabbnak tartanám.

    Vagy csinálsz egy excel makrót, ami szintén beleír az adatbázisodba :)

    BME-n már ilyen szakdolgozatokért is adnak diplomát? :F

  • bandus
    veterán

    Én már azon fennakadtam, hogy minek egy rekord fájl és egy csv fájl külön-külön? Miért nem a csv fájl a rekord fájl is egyben :F

    hát egy rekord fájlban tároljuk az adatokat (mini adatbázis) és ezeket exportáljuk egy csv fájlba, hogy azt excellel is tudjuk kezelni. és azt kellene megoldani, hogy ha az így kiimportált .csv-t megnyitjuk excellel, és hozzáírunk még néhány rekordot (ami 3 mezőből áll) akkor azokat be tudjuk importálni a programfelületen keresztül a rekord típusú fájlunkba. szerintem is hülyeség, mivel a programmal simán hozzá tudjuk adni. nade ezen a hülye tárgyon múlik, hogy mehessek államvizsgázni, muszáj összekapnom magam. ha gondolod el tudom küldeni az eddigi programot..:)

  • #10382336
    törölt tag

    fogsz találni, meg gugli egy rakás tutorial is kidobott. Ezek alapján mondjuk annyira nem tűnik két kattintásnak a dolog, de reméljük a legjobbakat.

    Többek között [Ezt] találtam,
    remélem ingyenes és használható. Az viszont biztos, hogy keményen rá
    kell akadnom a program súgójára egy szótár segítségével. (Hiába, akinek az angol
    tudása hagy némi kívánnivalót maga után...)

    Köszi a segítséget!!! :R

  • martonx
    veterán

    Köszönöm a gyors választ.

    Valószínűleg a .rtf / compiler-t választom, feltéve, hogy a compiler-ből
    egy free változatot be tudok szerezni.

    fogsz találni, meg gugli egy rakás tutorial is kidobott. Ezek alapján mondjuk annyira nem tűnik két kattintásnak a dolog, de reméljük a legjobbakat.

  • #10382336
    törölt tag

    A *.hlp fájlok rtf-ből álló lapok halmaza. Így ha megcsinálod az rtf-eidet, akkor ezekből egy compilerrel tudsz *.hlp fájlt generálni.
    Meglévő *.hlp-t szerkeszteni nem fogsz tudni, hacsak nincs meg a forrásod, amiből generálódott a .hlp.

    Ha pedig egy meglévő projektedhez akarsz automatikusan help-et generálni, akkor használd a Sandcastle-t (sose használtam, csak sokat hallottam róla), és az elvártnak megfelelően kommentezd a kódodat.

    Köszönöm a gyors választ.

    Valószínűleg a .rtf / compiler-t választom, feltéve, hogy a compiler-ből
    egy free változatot be tudok szerezni.

  • martonx
    veterán

    Sziasztok!

    Egy olyan kérdésem lenne, hogyan lehet ".NET"-ben
    "*.HLP" fájlt létrehozni/szerkeszteni?

    A *.hlp fájlok rtf-ből álló lapok halmaza. Így ha megcsinálod az rtf-eidet, akkor ezekből egy compilerrel tudsz *.hlp fájlt generálni.
    Meglévő *.hlp-t szerkeszteni nem fogsz tudni, hacsak nincs meg a forrásod, amiből generálódott a .hlp.

    Ha pedig egy meglévő projektedhez akarsz automatikusan help-et generálni, akkor használd a Sandcastle-t (sose használtam, csak sokat hallottam róla), és az elvártnak megfelelően kommentezd a kódodat.

  • #10382336
    törölt tag

    Sziasztok!

    Egy olyan kérdésem lenne, hogyan lehet ".NET"-ben
    "*.HLP" fájlt létrehozni/szerkeszteni?

  • martonx
    veterán

    sziasztok!

    simét VB kérdéssel fordulnék hozzátok. már van egy jó kis programunk, ami képes feltölteni egy rekord típusú fájlt, 3 féle adat tartozik egy rekordhoz. ezt a fájlt ki is tudjuk iratni egy exceláltal is kezet .csv formátumú soros fájlba. az lenne a kérdésem, hogy az hogyan oldható meg, hogy ha én ebbe a soros .csv fájlba beírok még adatokat, azt a program be tudja olvasni, és el tudja tárolni a már említett rekord típusú fájlba, vagyis elvégezni a műveletet visszafelé.

    remélem érthető a kérdés :)

    köszi előre is a segítséget!

    Én már azon fennakadtam, hogy minek egy rekord fájl és egy csv fájl külön-külön? Miért nem a csv fájl a rekord fájl is egyben :F

  • bandus
    veterán

    sziasztok!

    simét VB kérdéssel fordulnék hozzátok. már van egy jó kis programunk, ami képes feltölteni egy rekord típusú fájlt, 3 féle adat tartozik egy rekordhoz. ezt a fájlt ki is tudjuk iratni egy exceláltal is kezet .csv formátumú soros fájlba. az lenne a kérdésem, hogy az hogyan oldható meg, hogy ha én ebbe a soros .csv fájlba beírok még adatokat, azt a program be tudja olvasni, és el tudja tárolni a már említett rekord típusú fájlba, vagyis elvégezni a műveletet visszafelé.

    remélem érthető a kérdés :)

    köszi előre is a segítséget!

  • martonx
    veterán

    Sziasztok!

    Van itt valaki, aki Silverlightozik? Lenne egy RIA Services-es kérdésem.

  • opr
    nagyúr

    Szívesen! :B
    Érdekes, és marhára elcseszett egy architektúra az, amit ti használtok. A .hta kvázi vastag kliensnek számít, ennek ellenére úgy próbáljátok meg használni, mintha egy IIS-ről futó klasszikus ASP alkalmazás lenne. Aztán megy a nagy csodálkozás, hogy ez miért nem működik, miközben mindent úgy csinálunk, mint a tutorialokban.
    Azért kell a külön vbs hogy átláthatóbb legyen az egész??? Ezen betegre röhögtem magam, annak alapján, ahogy leírtad az architektúrátokat.
    HIHETETLEN :))
    Tudom nem te tehetsz róla, ehhez kell alkalmazkodnod, de röhejesen béna ez az egész :DD
    Veszünk egy kicsit innen - aztán onnan, végül megfűszerezzük ezzel - azzal. Amikor nem működik megpatkoljuk, buheráljuk, végül agyonbonyolítjuk az átláthatóság jegyében.
    VÁÁÁÁ :C

    Jól érzed, ez van :DDD
    De ha már ilyen szénné gányolt-hackelt alami van, akkor legalább ez a része legyen egyelőre mentes a káosztól.
    (úgy értem, hogy midnenhez van egy html file, egy button a hta-ban a html-hez, meg egy vbs, mind-mind azonos néven... agyrém, de legalább könnyen megszokható :K )

  • martonx
    veterán

    Nah, ezaz, köszönöm :R
    jquery nem jutott eszembe, mint lehetőség. Egyébként igen, háttérben akarom, interakció nélkül (ehhez kell a vbs), van is szívás a hülye vista+office12 security(ehhez meg egy macro) marhaságaival (certificate-ek), de ez már egy totál másik kérdés, azt már rég megoldottam :)

    Külön vbs file meg összvissz azért kell, mert ez a szokás, és mivel ez a szokás így sokkal átláthatóbb az egész. Ha a későbbiekben módosítani kell bármit jó, ha van egy adott rendszer, még akkor is ha néha hülyén jön ki az egész.

    Szívesen! :B
    Érdekes, és marhára elcseszett egy architektúra az, amit ti használtok. A .hta kvázi vastag kliensnek számít, ennek ellenére úgy próbáljátok meg használni, mintha egy IIS-ről futó klasszikus ASP alkalmazás lenne. Aztán megy a nagy csodálkozás, hogy ez miért nem működik, miközben mindent úgy csinálunk, mint a tutorialokban.
    Azért kell a külön vbs hogy átláthatóbb legyen az egész??? Ezen betegre röhögtem magam, annak alapján, ahogy leírtad az architektúrátokat.
    HIHETETLEN :))
    Tudom nem te tehetsz róla, ehhez kell alkalmazkodnod, de röhejesen béna ez az egész :DD
    Veszünk egy kicsit innen - aztán onnan, végül megfűszerezzük ezzel - azzal. Amikor nem működik megpatkoljuk, buheráljuk, végül agyonbonyolítjuk az átláthatóság jegyében.
    VÁÁÁÁ :C

  • opr
    nagyúr

    Naponta használok javascript framework-öket, bár én a jquery-re esküszök (mondjuk tagadhatatlan, hogy a dojo és a dhtmlx nagyon látványos dolgokat tud). jquery + dhtmlx kombó a kedvencem.

    Megoldási javaslatom:
    1. használj jquery-t. Igen, lehet a kettőt párhuzamosan is használni. Jquery játszva kiolvassa neked a textarea értékét.
    2. egyúttal jqueryvel a gombodhoz hozzáadnék egy mailto href-et, amit jqueryvel szépen előre összeállítok, és tartalmazná a textarea értékét a bodyban.
    3. öröm, boldogság

    Mihez kell itt vbscript? Ha tudsz egy kicsit html-ezni, akkor tudod, hogy a mailto elindítja az alapértelmezett levelezőt, ráadásul szépen lehet paraméterezni.
    Vagy az email küldést a háttérben akarod, a felhasználó interakciója nélkül futtatni? Ha már .hta-ról beszélünk, akkor erre is van lehetőséged, de még ekkor sem értem miért kell külön vbs fájl ehhez.

    Nah, ezaz, köszönöm :R
    jquery nem jutott eszembe, mint lehetőség. Egyébként igen, háttérben akarom, interakció nélkül (ehhez kell a vbs), van is szívás a hülye vista+office12 security(ehhez meg egy macro) marhaságaival (certificate-ek), de ez már egy totál másik kérdés, azt már rég megoldottam :)

    Külön vbs file meg összvissz azért kell, mert ez a szokás, és mivel ez a szokás így sokkal átláthatóbb az egész. Ha a későbbiekben módosítani kell bármit jó, ha van egy adott rendszer, még akkor is ha néha hülyén jön ki az egész.

  • martonx
    veterán

    Ok, nem kell bunkózni. Először is, írtm, hogy dojo-t használunk. A válaszokból kiderült, hogy nem tudjátok mi az, vagy figyelmetlenek voltatok. Másodszor, a halál se akarja, ezt a feladatot kaptam, hogy oldjam meg, pont. Meglévő rendszerben megy a meló, nem nagyon szólhatok bele. Akkor a lényeg, mégegyszer:
    Van egy fos .hta oldal, amin fut a dojo, meg nyilván aloldalanként egy raklap html. A dojo egy javascript engine, ami megoldja, hogy a scripteknek át tudjuk adni amit az isten is úgy akar.
    A lényeg, hogy van egy script request form, a user kitölti, örül, elégedett, stb, előbb-utóbb jelezzük neki, hogy kész a script és pont. (multi környezetben automatizálunk olyanokat, amiket a biodroidok csinálnak.)
    Amit csinálni kell, egy kurva aloldal (igen, fontos, hogy html legyen, és nem, nem elég az inputbox), amin van egy valami, ahova a user beírja a feedback-et vagy amit akar, és egy gomb megnyomására outlook-al elküldi a megadott címekre egy script a textarea tartalmát.
    Ehhez egy inputbox nem elég, és a jelenlegi struktúra miatt nem megoldható, hogy a hta/html file-ba beírom a scriptet, hanem, mint midnen másnál külön fileba kell pakolni.
    A rendszer nem az én művem, még csak ötlet szintjén sem, és mivel általában csak textbox-ok vannak, amik a hülye dojo-ban object-ként átadhatók, ezért működnek is. A probléma, hogy feedback-et mi másba írjon a user, mint textarea, ami viszont nem object a dojo-ban.
    Tehát a probléma röviden: adott oldal, adott html, külön mappában külön script, ezek így vannak és pont. Az oldal tartalmát variálhatom, valóban.

    Remélem, így már nem tűnök annyira nagyon hülyének...

    szerk: ha rajtam múlna az egész marhaságot átírnám vb/delphi-re, kb. két nap alatt, és nem lenne ilyen szenvedés... De nem rajtam múlik :(

    Naponta használok javascript framework-öket, bár én a jquery-re esküszök (mondjuk tagadhatatlan, hogy a dojo és a dhtmlx nagyon látványos dolgokat tud). jquery + dhtmlx kombó a kedvencem.

    Megoldási javaslatom:
    1. használj jquery-t. Igen, lehet a kettőt párhuzamosan is használni. Jquery játszva kiolvassa neked a textarea értékét.
    2. egyúttal jqueryvel a gombodhoz hozzáadnék egy mailto href-et, amit jqueryvel szépen előre összeállítok, és tartalmazná a textarea értékét a bodyban.
    3. öröm, boldogság

    Mihez kell itt vbscript? Ha tudsz egy kicsit html-ezni, akkor tudod, hogy a mailto elindítja az alapértelmezett levelezőt, ráadásul szépen lehet paraméterezni.
    Vagy az email küldést a háttérben akarod, a felhasználó interakciója nélkül futtatni? Ha már .hta-ról beszélünk, akkor erre is van lehetőséged, de még ekkor sem értem miért kell külön vbs fájl ehhez.

  • opr
    nagyúr

    hehehe, bocs de erre képtelen vagyok válaszolni :B
    Viccesebbnél viccesebb verziókban írtam meg a válaszomat, de inkább mindig kitöröltem, hogy ne tűnjek parasztnak.
    ArchElf, kérlek segíts! Válaszold meg helyettem, mert én már eldobtam az agyamat :W

    Ok, nem kell bunkózni. Először is, írtm, hogy dojo-t használunk. A válaszokból kiderült, hogy nem tudjátok mi az, vagy figyelmetlenek voltatok. Másodszor, a halál se akarja, ezt a feladatot kaptam, hogy oldjam meg, pont. Meglévő rendszerben megy a meló, nem nagyon szólhatok bele. Akkor a lényeg, mégegyszer:
    Van egy fos .hta oldal, amin fut a dojo, meg nyilván aloldalanként egy raklap html. A dojo egy javascript engine, ami megoldja, hogy a scripteknek át tudjuk adni amit az isten is úgy akar.
    A lényeg, hogy van egy script request form, a user kitölti, örül, elégedett, stb, előbb-utóbb jelezzük neki, hogy kész a script és pont. (multi környezetben automatizálunk olyanokat, amiket a biodroidok csinálnak.)
    Amit csinálni kell, egy kurva aloldal (igen, fontos, hogy html legyen, és nem, nem elég az inputbox), amin van egy valami, ahova a user beírja a feedback-et vagy amit akar, és egy gomb megnyomására outlook-al elküldi a megadott címekre egy script a textarea tartalmát.
    Ehhez egy inputbox nem elég, és a jelenlegi struktúra miatt nem megoldható, hogy a hta/html file-ba beírom a scriptet, hanem, mint midnen másnál külön fileba kell pakolni.
    A rendszer nem az én művem, még csak ötlet szintjén sem, és mivel általában csak textbox-ok vannak, amik a hülye dojo-ban object-ként átadhatók, ezért működnek is. A probléma, hogy feedback-et mi másba írjon a user, mint textarea, ami viszont nem object a dojo-ban.
    Tehát a probléma röviden: adott oldal, adott html, külön mappában külön script, ezek így vannak és pont. Az oldal tartalmát variálhatom, valóban.

    Remélem, így már nem tűnök annyira nagyon hülyének...

    szerk: ha rajtam múlna az egész marhaságot átírnám vb/delphi-re, kb. két nap alatt, és nem lenne ilyen szenvedés... De nem rajtam múlik :(

  • ArchElf
    addikt

    Tényleg, ha már két külön fájl, miért nem javascripttel próbálkozol?
    Az legalább böngésző független.
    Vagy még jobbat mondok. Áruld el, hogy mit akarsz, és lehet hogy sokkal jobb megoldást tudunk rá, mint amit kitaláltál.

    Szerintem van valami vbs fájlja, amit html-el akar etetni... Ennyi erővel használhatna mondjuk a vbs-en belül inputbox-ot is...

    AE

  • martonx
    veterán

    van egy html file, abban a textarea, meg egy gomb, meg van egy .vbs file, ami nyilván a script. A gomb feladata: meghívni a .vbs file-t úgy, hogy argumentumként a textarea.value-t adja át.
    A scriptben pedig wscript.arguments-et használva akarom megoldani, hogy megkapja a változó ezt az értéket.

    Tényleg, ha már két külön fájl, miért nem javascripttel próbálkozol?
    Az legalább böngésző független.
    Vagy még jobbat mondok. Áruld el, hogy mit akarsz, és lehet hogy sokkal jobb megoldást tudunk rá, mint amit kitaláltál.

  • ArchElf
    addikt

    van egy html file, abban a textarea, meg egy gomb, meg van egy .vbs file, ami nyilván a script. A gomb feladata: meghívni a .vbs file-t úgy, hogy argumentumként a textarea.value-t adja át.
    A scriptben pedig wscript.arguments-et használva akarom megoldani, hogy megkapja a változó ezt az értéket.

    VBS-t nem gazán lehet úgy meghívni, mint fuattatható fájlt htmlből (legalábbis értelme sok nincs). A Wscript.Arguments-be amúgy a futtatott fájl argumentumai kerülnek át - pl.:
    a popupmessage.vbs "user" "üzenet" esetén az első argumentum a "user", a második az "üzenet".
    Egyrészt ez azért problémás, mert a commandline hossza korlátos (255 körül, így az átadható adatmennyiség is korlátos), másrész egy HTML kódnál van meghívható függvény opció, így felesleges trükközni és hackelni, hogy a href mezőbe az ember valahogy belepaszírozza a textarea tartalmát is (ami nem mellesleg lehet, hogy bele sem fér).

    AE

  • martonx
    veterán

    van egy html file, abban a textarea, meg egy gomb, meg van egy .vbs file, ami nyilván a script. A gomb feladata: meghívni a .vbs file-t úgy, hogy argumentumként a textarea.value-t adja át.
    A scriptben pedig wscript.arguments-et használva akarom megoldani, hogy megkapja a változó ezt az értéket.

    hehehe, bocs de erre képtelen vagyok válaszolni :B
    Viccesebbnél viccesebb verziókban írtam meg a válaszomat, de inkább mindig kitöröltem, hogy ne tűnjek parasztnak.
    ArchElf, kérlek segíts! Válaszold meg helyettem, mert én már eldobtam az agyamat :W

  • opr
    nagyúr

    Mit értesz két külön fájl alatt?

    van egy html file, abban a textarea, meg egy gomb, meg van egy .vbs file, ami nyilván a script. A gomb feladata: meghívni a .vbs file-t úgy, hogy argumentumként a textarea.value-t adja át.
    A scriptben pedig wscript.arguments-et használva akarom megoldani, hogy megkapja a változó ezt az értéket.

  • martonx
    veterán

    Jaaa, hogy így. Így működik, valamiért akkor nem működik, ha két külön file-ról beszélünk, és a textarea tartalmát argument-ként akarom átadni. Nekem viszont elég fontos lenne, hogy két külön file legyen :B

    Mit értesz két külön fájl alatt?

  • opr
    nagyúr

    Nem kell ide fájl küldés, ennyi az egész:

    </head>
    <SCRIPT Language="VBScript">
    Sub RunScript
    Msgbox comments.innerhtml
    End Sub
    </SCRIPT>
    <body>
    <TEXTAREA NAME="comments" COLS=40 ROWS=6></TEXTAREA>
    <input id=runbutton class="button" type="button" value="Run Button" name="run_button" onClick="RunScript">
    </body>

    Egyszerű, mint egy faék.

    Jaaa, hogy így. Így működik, valamiért akkor nem működik, ha két külön file-ról beszélünk, és a textarea tartalmát argument-ként akarom átadni. Nekem viszont elég fontos lenne, hogy két külön file legyen :B

Új hozzászólás Aktív témák