Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Spara och läsa en ARRAY till/från fil?

Postades av 2007-11-13 12:46:26 - Niklas Rosenberg, i forum visual basic - allmänt, Tråden har 38 Kommentarer och lästs av 1794 personer

Har ett litet problem....
Skall spara ner en array med nedanstående struktur till en fil...

Type StrucktPoint
X As Long
Y As Long
R As Byte
G As Byte
B As Byte
Res1 As Byte
Res2 As Byte
Res3 As Byte
Res4 As Byte
Intensity As Byte
RepeatPoint As Byte
End Type

Public OutPutData(100, 3, 100) As StrucktPoint

Om jag vill spara ner hela ARRAYen går det att göra?
Eller måste man ladda ner värde för värde?

Och går det att blanda variablertyper som man skriver?
Typ att man sparar:
En stringvariabel
En stringvariabel
En OutPutData (Se Ovan) Array


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-13 13:27:20 - Samuel Adolfsson

Ett smidigt sätt är ju att göra din struct till serializable, sen serialisera arraylistan och spara ner bytes'en till fil. Sen är det ju bara läsa in alla bytes och deserialisera.


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-13 13:30:32 - Niklas Rosenberg

Nu blev det grekiska för mig? Litet kort exempel?
Vad menar du med Deserialisera?


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-13 13:48:36 - Samuel Adolfsson

Eftersom jag inte kan ett dugg VB får du hålla till godo med C# kod, det borde vara relativt enkelt att översätta. Nåt sånt här borde det iaf bli:

[Serializable] // Gör struct'en serialiserbar
public struct StrucktPoint
{
public long X;
....
}

StrucktPoint p1 = new StrucktPoint();
StrucktPoint p2 = new StrucktPoint();
// sätt värden på p1 och p2 etc

ArrayList lst = new ArrayList(); // System.Collections
lst.Add(p1);
lst.Add(p2);

BinaryFormatter bf = new BinaryFormatter(); // System.Runtime.Serialization.Formatters.Binary;
using(FileStream fs = File.Create("c:\\minlista.txt")) // System.IO
{
bf.Serialize(fs, lst);
}

ArrayList lst2;
using (FileStream fs = File.OpenRead("c:\\minlista.txt"))
{
lst2 = (ArrayList)bf.Deserialize(fs);
}


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-13 13:57:43 - Niklas Rosenberg

I VB?


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-14 09:48:32 - Samuel Adolfsson

Tyvärr behärskar jag inte VB så jag kan inte hjälpa dig med det. Men om du inte redan löst det så borde någon vänlig själ här på forumet kunna översätta koden till VB!


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-14 10:26:57 - Sven Åke Persson

Börja med att skippa din Matris OutPutData och bygg så här istället
<code>
Option Explicit
Type StrucktPoint
X As Long
Y As Long
R As Byte
G As Byte
B As Byte
Res1 As Byte
Res2 As Byte
Res3 As Byte
Res4 As Byte
Intensity As Byte
RepeatPoint As Byte
End Type

Public OutPutData1(99) As StrucktPoint
Public OutPutData2(4) As StrucktPoint ' Nyfiken vilka av ovan ligger här
Public OutPutData3(99) As StrucktPoint
</code>

Den här principlösningen för att få över det till en TextFil är det smartaste.
Då får du bara en Array som underlättar betydligt. Glöm då 3 Array lösningen ovan
<code>
Public Entry As StrucktPoint
Public OutPutData() As String ' eller kanske Public OutPutData() As Entry
Dim FileNum As Long,txtData As String
*************************************
'När du börjar fylla Arrayen
'ReDim Preserve OutPutData(UBound(OutPutData) + Len(Entry))
'Ungefär så här på olika ställe
*****************************************************
txtData = "MinTestData.txt"
FileNum = FreeFile
Open "C:\DataText\" & txtData For Random As #FileNum Len = Len(Entry)

'här loopar du med
'For 0 To Ubound(OutPutData)
' Put #FileNum, , Entry
'End For
</code>
I princip så här


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-14 13:20:47 - Niklas Rosenberg

tyvärr funkar det inte att skippa min array..
Det är en array med en massa 2D punkter..
Dvs OutPutData(BildNr,Rithuvud,PunktNr) så jag kan inte ta bort något av det...
I värsta fall så får jag spara punkterna en för en...
Men finns det ett bättre sätt så är blir man ju glad.


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-14 17:00:49 - Andreas Thorarins

jag körde Samuels kodsnutt i en c# to vb konverter ( http://converter.telerik.com/ )
sätt attributet <Serializable()> på din struct , sen kan du prova det här

Dim p1 As New StrucktPoint()
Dim p2 As New StrucktPoint()
' sätt värden på p1 och p2 etc

Dim lst As New ArrayList()
' System.Collections
lst.Add(p1)
lst.Add(p2)

Dim bf As New BinaryFormatter()
' System.Runtime.Serialization.Formatters.Binary;
Using fs As FileStream = File.Create("c:\minlista.txt")
' System.IO
bf.Serialize(fs, lst)
End Using

Dim lst2 As ArrayList
Using fs As FileStream = File.OpenRead("c:\minlista.txt")
lst2 = DirectCast(bf.Deserialize(fs), ArrayList)
End Using


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-14 17:05:33 - Tom Granqvist

Andreas: Din kod är väl VB.NET? Det här forumet är för VB6...


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-14 17:38:59 - Andreas Thorarins

oj hehe då kan vi nästan glöma serialisering med engång då :)

blir nog lite djupare saker som det här då
http://www.vb-helper.com/howto_vb6_serialize.html

#edit lade till länken


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-14 18:17:28 - Jan Bulér

Hej

Du bör kunna göra så här.
(princip)

<code>
Option Explicit


Private Const DIMENSION1 As Long = 1
Private Const DIMENSION2 As Long = 2
Private Const DIMENSION3 As Long = 3
Private Const FILENAME As String = "C:\temp\test.test"

Private Type StrucktPoint
x As Long
Y As Long
R As Byte
G As Byte
B As Byte
Res1 As Byte
Res2 As Byte
Res3 As Byte
Res4 As Byte
Intensity As Byte
RepeatPoint As Byte
End Type


Function WriteBinFileTest()
Dim myData(100, 3, 100) As StrucktPoint
Dim varData As Variant

Dim noOfBytes As Long
Dim fileNum As Long

fileNum = FreeFile

Open FILENAME For Binary Access Write As #fileNum

'Beräkna antalet bytes att skriva
Dim tmpData As StrucktPoint
noOfBytes = LenB(tmpData) * _
((UBound(myData, DIMENSION1) - LBound(myData, DIMENSION1) + 1) + _
(UBound(myData, DIMENSION2) - LBound(myData, DIMENSION2) + 1) + _
(UBound(myData, DIMENSION3) - LBound(myData, DIMENSION3) + 1))

Put #1, , myData
Close #fileNum

End Function

</code>


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-14 18:53:10 - Sven Åke Persson

<b>tyvärr funkar det inte att skippa min array.. </b>

Klart att det går. Helt onödigt/värdelöst att använda en 3 matris.
Gör dig besvär att läsa förstå vad du får för svar ovan.

Funderade på en sak. Varför måste du gå över en matris innan du läser in till fil.
Varför inte läsa in StrucktPoint direkt till filen med <b>Put #FileNum, ,StrucktPoint</b>

Då kan du betrakta textfilen på samma sätt som din <b>OutPutData(BildNr,Rithuvud,PunktNr)</b>


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-15 08:20:54 - Sven Åke Persson

Jag tycker ditt projekt är väldigt intressant.
Nyfiken på varför du tar en mellanväg med din 3 matris.

Hur går det till när du laddar in StrucktPoint till OutPutData(BildNr,Rithuvud,PunktNr) och
<b>varför är det så viktigt att du går via denna array ?</b>

Jag tror att du håller på med en TTF editor,ett gammalt projekt jag också funderat på.

Edit:
<b>tyvärr funkar det inte att skippa min array..
Det är en array med en massa 2D punkter..
Dvs OutPutData(BildNr,Rithuvud,PunktNr) så jag kan inte ta bort något av det... </b>

Har läst din tråd noga nu och börjar förstå att din Array OutPutData(100,3,100)
är du låst till av någon anledning <b>eller ?</b>


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-15 23:12:52 - Niklas Rosenberg

Då skall vi se om jag kan förklara så att ni förstår hur jag menar med Arrayen...
Jag håller på med ett program som skall styra men showlaser..
OutPutData(Frame,Scanner,Point) är en array med punkter...
Där Frame är bildnumret..
Scanner är är med för att det finns 0-3 Scannerhuvud som ritar olika saker..
Point är Vilken punkt som den ritar...
Så för att förklara hur jag tänkt så Lopar den igenom Frame = 1 till alla Scanners 0-3 och Skickar först Punkt ett till dem.....
Sedan skickar den Punkt 2 till De 0-3 Scanners...
När den skickat alla alla Punkterna i Frame = 1 så väntar den en viss tid då den skall skicka Frame 2 till alla scanners...

Hm.. När jag tänker efter så här sent så förstod jag nog inte själv vad jag menade..

Till Varje bild som lasrarna skall rita så Finns det Totalt 4 Bilder (en för varje Scanner) med ett visst antal punkter som skall visas i en Bild....

Om det är någon som har ett bättre förslag så säg gärna till....
Speciellt om det inte går att Ändra Antalet i Arrayen mer än den sista Matrixen.....
Sedan behöver jag ju givetvis spara ner alla punkter i en fil...

Jag vet att det kanske är lite inveklat men någongång skall man ju lösa det med.. :)


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-16 09:47:51 - Sven Åke Persson

Bra förklarat.Tror att jag har hela bilden(woops :-) synlig för mig.
Ok Vi kör med din Array lösning Men ! .Gör tre enskilda INTE matris.
Public OutPutFrame(100) As Long
Public OutPutScan(3) As Byte
Public OutPutPoint(100) As Long

Om du känner för det så kan jag skriva ett förslag på hur jag skulle lösa det.
Tycker det är intressant project som jag själv skulle kunna ha användning för.

Blir det mycket jobb för dig att ändra enl det förslag jag tänker lämna ?
Jag gör detta som terapi. Pensionär som inte har annat kul att göra.

Sven :-) StandBy på denna kanal


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-16 11:53:27 - Sven Åke Persson

<b>Om det är någon som har ett bättre förslag så säg gärna till....
Speciellt om det inte går att Ändra Antalet i Arrayen mer än den sista Matrixen.....
Sedan behöver jag ju givetvis spara ner alla punkter i en fil... </b>

Ang ReDim så är mitt förslag att Vi/Du bestämmer ett max värde för Array:n
I Fom Load laddar Vi med 256 i alla fack och med en enkel IF sats Exit For om värdet är > 255.
Public OutPutFrame(100) As Long
Public OutPutPoint(100) As Long

Men nu kommer stöttestenen Du har 11 olika värde i din Type StrucktPoint hur har du tänkt para ihop
dessa i 3 arrayer ?. R G och B kan man skriva som en Long typ 165834(bara ett ex.)
X och Y kan man skriva som 1 Long osv osv.

Min fråga återkommer varför måste Vi gå över Arrayer.
Varför inte köra mot en Randomfil direkt och som du vill mot Stringvariabler ?

Sven
som har tänt på ditt project vad avser optimering snabbhet.


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-16 16:49:10 - Niklas Rosenberg

Hm.. Får nog förklara en gång till.....
Varibeln OutPutData är en variabel med en massa punkter..

Om vi gör det enkelt så struntar vi i att det finns 4 Scannaerutgångar just nu..
Tänk att du skall ha en Animering med 2D vektor punkter (Type StrucktPoint (X,Y,Röd,Grön,Blå, osv)
Tänk att OutPutData har 100Bilder i en animering...
I varje bild har du 100 StrucktPoints....
Alltså har du en 100X100 array redan där...
Lasern ritar ju mellan varje punkt som finns i arrayen...
Så säg att den ritar Bild1:Punkt1,Punkt2,Punkt3-----Punkt100 och börjar om igen...
Tills det är dags för nästa Bild2:Punkt1,Punkt2,Punkt3-----Punkt100 och börjar om igen...
Lasern ritar med 45000punkter /s så den ritar om bilden många gånger...
Bildbytet sker ju efter en viss tid.. Typ10 bilder i sekunden... Eller vad man nu vill...
Tanken är ju att man laddar in hela Animeringen i en Array med StrucktPoint..
Har du 100bilder så är ju varja bild 100pkt->OutPutData(100,100)
Och för att sedan göra det ännu svårare så skall det vara 4Scannrar...
Varje bild ritar VARJE Scanner 100pkt... Och de 100pkt är ju inte samma mellan de olika..
Därför är det svårt att ta bort och göra 3 Olika Arrayer...
Varje punkt sedan talar om vilken X,Y position och Vilken mängd med R,G,B som som lasern skall ha när den kommer fram...

Vart jag sedan får alla punkter ifrån är olika.....
Man kan rita streck/cirklar på frihand...
SinusGeneratorer....
3Dritningar...
Osv...
Men bilderna måste ju sparas och laddas in igen...

Förklara jag mig lite bättre nu??


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-17 03:50:48 - Sven Åke Persson

Ja Ja Jag har tänkt alldeles galet. Återkommer när jag sugit på den karamellen.


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-17 10:27:22 - Niklas Rosenberg

Ler...... Jag väntar...
I värsta fall får jag loopa igenom alla arrayer och spara... Hade varit skönt bara om det fanns något sätt att spara en hel array...


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-17 13:29:15 - Niklas Jansson

Vad du bör göra är att dela upp det i mindre delar.

1. en typ "animering", innehåller en array av bilder
2. en typ "bild", innehåller en array av punkter.
3. en typ "punkt", innehåller information om varje punkt.

Sen kör du i princip.

for i = lbound(animering.bilder) to ubound(animering.bilder)
do while (time...)
for j = lbound(animering.bilder(i).points) to ubound(animering.bilder(i).points)
drawpoint(animering.bilder(i).points(j))
next j
loop
next i


För att rita en ny punkt gör du :

sub add_point(bild, x,y, ...)
redim animering.bilder(bild).points(0 to n+1) as point
with animering.bilder(bild).points(n+1)
.x = x
...
end with
end sub


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-17 16:55:49 - Niklas Rosenberg

Men det går inte att göra så...
Då varje Animering innehåller tex max 100 "Bilder(Frame)" där varje "Bild" innehåller max 4 Scanners Där varje Scanner Ritar Max 100 punkter.. Vilket ger 400000punkter att hålla reda på..

Det enda sättet att göra om Array är att lägga in i StrucktPointen: BildNr, ScannerNr,PointNummer MEN då måste man ju leta igenom alla Arrayer tills man hitta rätt Punkt.... Eller går det att sätta som i e Databas att BildNr=1, ScannerNr=1, PointNummer=1 och få reda på X,Y,R,G,B?
Isåfall skulle man kunna ha EN array..


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-17 17:01:31 - Niklas Jansson

Va?
Det går visst att göra så, det enda är att du måste lägga till ytterligare ett steg för antalet scanners.

Läs det igenom och återkom, det är det mest vettiga sättet att lösa det på.


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-18 08:47:39 - Sven Åke Persson

Igen.Var tvungen att göra en testrunda på hur man lagrar StrucktPoint i en fil och sedan återfår den.
Detta funkar.
<code>
Option Explicit
' i Modul 1
Type StrucktPoint
X As Long
Y As Long
R As Byte
G As Byte
B As Byte
Res1 As Byte
Res2 As Byte
Res3 As Byte
Res4 As Byte
Intensity As Byte
RepeatPoint As Byte
End Type
Public OutPutData(100,3,100) As StrucktPoint
'**********************************
'I Form 1
Option Explicit
Dim Entry As StrucktPoint
Private Sub Form_Load()
'Meningslösa test siffror
Entry.X = 1000
Entry.Y = 1400
Entry.R = 150
Entry.G = 210
Entry.B = 60
Entry.Res1 = 1
Entry.Res2 = 2
Entry.Res3 = 3
Entry.Res4 = 4
Entry.Intensity = 100
Entry.RepeatPoint = 80
End Sub
Private Sub Command1_Click()
'Börja med denna läser in StrucktPoint data i Arrayens fack nr 0
Private Sub Command1_Click()
Dim i As Long
'Börja med denna
For i = 0 To 2
OutPutData(i, 0, 0) = Entry
OutPutData(0, i, 0) = Entry
OutPutData(0, 0, i) = Entry
Next
End Sub
Private Sub Command2_Click()
'nästa lagra till fil
Dim FileNum As Long, txtData As String, i As Long
txtData = "MinTestData.txt"
FileNum = FreeFile
Open "C:\Temp\" & txtData For Binary As #FileNum Len = Len(Entry)
For i = 0 To 2
Put #FileNum, , OutPutData(i, 0, 0)
Next
Close #FileNum
End Sub

Private Sub Command3_Click()
'hämta tillbaka från fil
'nollställer för att vara säker att värdena kommer fån filen
Dim Entry As StrucktPoint
Dim FileNum As Long, txtData As String
' och det gör dom så det skall inte vara med
Entry.X = 0
Entry.Y = 0
Entry.R = 0
Entry.G = 0
Entry.B = 0
Entry.Res1 = 0
Entry.Res2 = 0
Entry.Res3 = 0
Entry.Res4 = 0
Entry.Intensity = 0
Entry.RepeatPoint = 0
txtData = "MinTestData.txt"
FileNum = FreeFile
Open "C:\Temp\" & txtData For Binary As #FileNum Len = Len(Entry)
Get #FileNum, , Entry
Close #FileNum
MsgBox Entry.X & " " & Entry.Y 'osv
End Sub
</code>
Så här ser det ut i filen HexEditor 17 Byte totalt för varje record
<b>00000000 E8 03 00 00 78 05 00 00 96 D2 3C 01 02 03 04 64
00000016 50 | E8 03 00 00 78 05 00 00 96 D2 3C 01 02 03 04
00000032 64 50 | E8 03 00 00 78 05 00 00 96 D2 3C 01 02 03
00000048 04 64 50 </b>


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-18 10:15:43 - Sven Åke Persson

Detta innebär att du mycket väl kan köra med din lösning för att lagra till TextFil
Funderar fortfarande på vad du vill lagra i dimensionen 0-3
<b>Edit: Förslaget ovan är nu ändrat till 3 Matris
<code>
Public OutPutData(100,3,100) As StrucktPoint och
Dim FileNum As Long, txtData As String
txtData = "MinTestData.txt"
FileNum = FreeFile
Open "C:\Temp\" & txtData For Binary As #FileNum Len = Len(Entry)
Put #FileNum, , OutPutData(0,0,0)
Close #FileNum
</code>


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-18 18:22:51 - Niklas Rosenberg

Sitter och funderar lite på problemet...
Just om det går att köra en annan variant av array för att få samma resultat...
For som det verkade så går det ju inte att ändra storleken på arrayen mer än den sista...För det kan teoretiskt sett vara mer än 100 bilder och 100 punkter i varje bild...
Och mindre med för den delen...


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-18 18:25:51 - Niklas Rosenberg

Hur gör du en sådan array då??
Är det bara att göra en array med arrayer...
Hm... tar om det..

Kan man göra så här?

Dim Punkter(10) as StrucktPoint
Dim Scanner(4) as Punkter
Dim Bild(10) as Scanner

Kan man sedan gå in och ReDimma varje del?
Tex om Bild(1).Scanner(1) behöver mer än 10 punkter??


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-18 19:12:46 - Niklas Rosenberg

Har provat denna nu:
Type StrucktPoint
X As Long
Y As Long
R As Byte
G As Byte
B As Byte
Res1 As Byte
Res2 As Byte
Res3 As Byte
Res4 As Byte
Intensity As Byte
RepeatPoint As Byte
End Type

Type StrucktScanner
Point(10) As StrucktPoint
End Type
Type StrucktPicture
Scanner(3) As StrucktScanner
End Type


Public Picture(10) As StrucktPicture

och det verkar funka.. Men om jag vill ändra hur många bilder det är i Arrayen?? Hur gör jag då?
Får inget att funka...


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-18 19:13:18 - Niklas Jansson

För det första heter det struct och inte struckt, för det andra ser jag ingen nytta med att ha kvar det, kalla det bara för point, scanner och picture, så ser man bättre vad som händer.

Hur som helst ska det nu vara ganska enkelt att "redimma".

Du kör helt enkelt med:

Redim Preserve Pictures(1 to 20) As Picture


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-18 19:44:53 - Niklas Rosenberg

struct... Ok.. Jag håller med... Blir lite Svengelska när man sitter och programmerar sent på nätterna efter jobbet..

Men om jag vill Ändra antalet Punkter då??
Kan jag ändra dem med med Tex ReDim Point(100) as StructPoint?
Vid start har den ju:
Picture(10).Scanner(4).Point(10)

Om jag vill ändra till Point(100) Hur gör jag då?
Och om jag vill ändra till Picture(100)?


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-18 22:28:14 - Niklas Jansson

Här ser du ett enkelt exempel:

<code>
Option Explicit

Private Type scanner
i() As Integer
End Type

Private Type benke
s() As scanner
End Type

Public Sub arne()
Dim be As benke

ReDim be.s(1 To 5) As scanner
ReDim be.s(1).i(1 To 5) As Integer

be.s(1).i(1) = 1

Dim sc As scanner
ReDim sc.i(1 To 10) As Integer

sc.i(1) = 5
End Sub
</code>


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-19 09:04:51 - Sven Åke Persson

Nu skall Vi baxa detta projekt i land. Måste rensa hjärnan från gamla föreställningar.
Kan man säga att alla bilder alltid har 100 points
<b>För det kan teoretiskt sett vara mer än 100 bilder och 100 punkter i varje bild...
Och mindre med för den delen...</b>

Vi måste få fram en struktur som funkar på 1 bild.
Sedan angående ReDima blir ett senare problem.

Låt oss nu tänka i att fixa Array problemmet med Ok 2 bilder. 2 * 100
Kan jag tänka så här. Jag har 3 arrayer .

I ArrayBild fack 0 ligger bildens Id som jag vill processa.
I ArrayPoint fack 0 - 100 ligger bildens alla StructPoint
I ArrayScanner fack 0 ligger vilken scanner bilden kommer från Nr 0- 4

Är detta påstående korrekt ???
Sven som aldrig ger upp


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-19 12:50:53 - Niklas Rosenberg

Detta är vad jag använder just nu:

Type StrucktPoint
X As Long
Y As Long
R As Byte
G As Byte
B As Byte
Res1 As Byte
Res2 As Byte
Res3 As Byte
Res4 As Byte
Intensity As Byte
RepeatPoint As Byte
End Type

Type StrucktScanner
Point(10) As StrucktPoint
End Type

Type StrucktPicture
Scanner(3) As StrucktScanner
End Type

Och Scanner kanske är lite missvisande...
I laservärlden kallas rithuvudet scanner...
Den flyttar strålen mellan X,Y punkter...
Så det är inget man läser in....


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-19 14:03:16 - Sven Åke Persson

M... det där hjälpte ju inte dugg . Nu blandar du ihop Typ deklarationer med arrayer.

Konfunderad innan Nu är jag ännu mer konfused.

Nu dyker det upp en Typ som heter StrucktScanner hur ser den ut ???

Blandar du inte ihop Typ Deklerationer med OutPutData Arrayer mmm.... konfused blir man.


Svara

Sv:Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-19 14:11:59 - Niklas Jansson

Nej, han följer mitt förslag, det är betydligt enklare och klarare.

En animation är en sekvens av bilder för ett antal scanners. Lägger man upp det så här är det superlätt att redim:a allt, man behöver inte förutsätta någon maxgräns, och man får vettig kod. Jag har utöver detta gett kod som mer eller mindre går att använda rakt av, för tillägg av punkter och uppritning av dem.

Och jag förstår inte exakt vad problemet är?
Du har ju fått all kod för att ändra storlek på arrayerna.


Svara

Sv: Spara och läsa en ARRAY till/från fill?

Postades av 2007-11-19 16:24:04 - Sven Åke Persson

Ahha det missade jag, läste inte ditt förslag så noga.
Ja ja Har en Typ Dekleration innästad i en annan.Det är ju klart helt Ok ,har jag aldrig gjort.

Ok då hoppar jag på det spåret också.


Svara

Sv: Spara och läsa en ARRAY till/från fil?

Postades av 2007-11-19 17:00:42 - Niklas Rosenberg

Har försökt en massa olika varianter men nu såg jag en grej som jag inte provat...

Du skrev typ:
Redim Preserve be(1).s(1 to 5)
Jag när jag provade motsvarande så har jag skrivit:
ReDim Preserve be(1 to 5).s(1 to 5)

Då har jag ju fått att den redan är Dimensionerad.....

Till Ursprungsfrågan nu då...
Hur sparar jag ner en sådan array som det kan vara olika antal på?
Eller måste jag spara ner alla antal med?


Svara

Sv:Spara och läsa en ARRAY till/från fil?

Postades av 2007-11-19 18:41:26 - Niklas Jansson

Ja, du måste dimensionera allting en efter en, du kan inte dimensionera flera saker i en array. Börja med det mest grunda, och fortsätt djupare och djupare. (Du behöver alltså först köra
be(1 to 5)
och sen
be(1).s(1 to 5)
be(2).s(1 to 5)
be(3).s(1 to 5)
...

Men med tanke på hur du har beskrivit problemet är det nog så du skulle göra ändå.

<b>>Hur sparar jag ner en sådan array som det kan vara olika antal på?
>Eller måste jag spara ner alla antal med?</b>
Alltså, det här är ju en mer generell fråga. I huvudsak finns det två sätt:
1. Berätta inte hur många element det finns, utan säg dem en efter en tills du får reda på att det inte är fler. Typ
Scanner1:
Bild1, x, y, z ...
Bild2, x, y, z ...
...
Bildn, x, y, z ...
Scanner2:
...

eller
2. Berätta hur många element du har, först.
Scanner1, 7 bilder:
Bild1, x, y, z ...
Bild2, x, y, z ...
...
Bild7, x, y, z ...
Scanner2, 9 bilder:
...

Hur du gör är upp till dig, vad du tycker är lättast att göra. Det första kan ju inte bli "strukturellt fel", men det kan det andra (det kan stå fel antal), men det är ofta lättare att hantera information som man vet exakt hur den kommer se ut i förväg, så det andra alternativet är i princip lättare.


Svara

Sv: Spara och läsa en ARRAY till/från fil?

Postades av 2007-11-21 12:08:03 - Niklas Rosenberg

Jag löser det nu med att först kolla om pointen är tom annars spara ner vilken plats varje point har som jag sparar ner occh sedan pointen...


Svara

Nyligen

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

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 725
27 958
271 751
403
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies