Avatar billede jakobscafe Nybegynder
30. juli 2003 - 10:58 Der er 8 kommentarer og
1 løsning

VB6: Public array - ikke tilladt, hvordan så?

Dav.

Jeg har en form(!!) med to knapper på. Knap 1 = åben en tekstfil, indlæse hver linie i et array (textline(linienr)). Ca 50.000 linier, virker fint.
Arrayet defineret som Dim textline(50000) as String
Knap2 skal outputte indholdet til en ny tekstfil, for de linier som indeholder en bestemt streng.
Når jeg i knap2's procedure forsøger at læse textline(1) er den tom (og de øvrige ligeså)
Aha - Jeg prøver at skrive Public textline(50000) as String.
Så får jeg en compile-error, not allowed as public member of object modules
I følge dokumentation kan man godt skrive f.eks.
public noget(50) as integer

Hvad er det lige jeg misser af væsentlig pointe her?
Avatar billede bennytordrup Nybegynder
30. juli 2003 - 11:07 #1
Hvor er textlinie(50000) defineret?

Hvis den er i erklærings-sektionen (øverst) i dit form-modul, kan knap2_click godt få fat i den.
Avatar billede sjh Nybegynder
30. juli 2003 - 11:08 #2
du kan ikke bruge Public textline(.... under FormXX kode vindue. du bliver nød til at legge den i et ModuleX.
Avatar billede nmh Nybegynder
30. juli 2003 - 11:12 #3
Sådan er det bare:
Constants, arrays, fixed length strings, user defined types not allowed as public members of object modules.

Men du kan godt erklære en streng.
Du kan så gøre brug af split ordren
s="1,2,3,4"
A=split(s,",")
nu er A(0)=1, ... A(3)=4
t=join(A,",") nu er t=s
På den måde kna du sikkert holde styr på dine textlinier
Avatar billede jakobscafe Nybegynder
30. juli 2003 - 11:14 #4
textline(50000) ligger allerførst i koden, lige efter option explicit
Avatar billede bennytordrup Nybegynder
30. juli 2003 - 11:17 #5
Prøv at poste indlæsningskoden og koden i knap2_click
Avatar billede sjh Nybegynder
30. juli 2003 - 11:17 #6
og ja du kan også bruge Private textline(50000) As String men så kan du ikke fange den fra andre Formler
Avatar billede nmh Nybegynder
30. juli 2003 - 11:19 #7
Koden som "bor" i din form? Det giver fejlen. Jeg har testet det. Prøv at lægge den i et modul eller brug en lang tekst-streng til det hele. Du kan jo som jeg viser let splitte op i en tabel, når du blot bruger passende skilletegn
Avatar billede jakobscafe Nybegynder
30. juli 2003 - 11:34 #8
tak nmh, det virker, omend ikke så elefant (c:
- udførelses tiden er ca 1 sekund på min 1,4 Ghz så behøves det vist ikke at blive optimeret.
Avatar billede nmh Nybegynder
30. juli 2003 - 11:39 #9
VB er meget langsom til at håndtere store tekststrenge, og det er ikke altid lige let at optimere.
Hvis man skal addere to lange tekststrenge kan man så vidt jeg husker (jeg er ikke helt sikker) med fordel gøre sådan:
Dim A(1) as string
A(0)=txt1
A(1)=txt2
s=join(A,"")
nu er s=tx1 & txt2
Avatar billede Ny bruger Nybegynder

Din løsning...

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

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

Log ind eller opret profil

Hov!

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

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

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging