|
| Indhold af textfile til Array ?? Fra : SpookiePower |
Dato : 06-01-02 13:59 |
|
Jeg er igang med et lille program hvor jeg gerne vil have
indholdet af en textfile smidt over i et Array. Men det jeg
har lavet virker ikke. Når programmet når til Sortering[I] := S;
kommer den op med en fejl og nævner en adresse i
programmets exe file. Hvad har jeg gjort forkert ??
Var
S : String;
I : Byte;
Sortering : Array of String;
begin
I := 0;
AssignFile(TextFileTest,Filenavn);
Reset(TextFileTest);
while not EOF(TextFileTest) do
Begin
I := I + 1;
ReadLn(TextFileTest,S);
Sortering[I] := S;
end;
CloseFile(TextFileTest);
end;
| |
SpookiePower (06-01-2002)
| Kommentar Fra : SpookiePower |
Dato : 06-01-02 14:21 |
|
Jeg fik programmet til at virker hvis jeg skrev
Var
Sortering : Array of String[1..10];
Istedet for Sortering : Array of String;
Men da jeg ikke ved hvor meget der står i textfilen, skulle
Array'et jo helst være et dynamisk Array. Kan nogle hjælpe
mig med det problem ?
| |
Thomas Finnerup (06-01-2002)
| Kommentar Fra : Thomas Finnerup |
Dato : 06-01-02 14:33 |
|
On Sun, 6 Jan 2002 13:59:17 +0100, "SpookiePower"
<boxjunk2600@hotmail.com> wrote:
> Jeg er igang med et lille program hvor jeg gerne vil have
> indholdet af en textfile smidt over i et Array. Men det jeg
> har lavet virker ikke. Når programmet når til Sortering[I] := S;
> kommer den op med en fejl og nævner en adresse i
> programmets exe file. Hvad har jeg gjort forkert ??
Jeg har ikke arbejdet med dynamiske arrays i Delphi, men jeg mener at
du skal bruge SetLength() hver gang du vil udvide et array. Prøv
f.eks. at indsætte SetLength(Sortering, I); før Sortering[I] := S;
- Thomas
| |
SpookiePower (06-01-2002)
| Kommentar Fra : SpookiePower |
Dato : 06-01-02 14:50 |
|
"Thomas Finnerup" <TF@Picco.dk> wrote in message
news:ubkg3us1d6dk9ur6aif1jbegdkh0pjrlp5@4ax.com...
<Snip>
> Jeg har ikke arbejdet med dynamiske arrays i Delphi, men jeg mener at
> du skal bruge SetLength() hver gang du vil udvide et array. Prøv
> f.eks. at indsætte SetLength(Sortering, I); før Sortering[I] := S;
>
>
> - Thomas
>
Det virker nu.....men så er der opstået et problem et andet sted i mit
program.
Her prøver jeg at indlæse indholdet af Arrayet til en listbox. Det virkede
fint
med et Statisk Array. Men nu virker det ikke med et dynamisk array.
begin
For I := 1 to Length(Sortering) do
Begin
S := Sortering[I];
ListBox1.Items.Add(S);
end;
end;
| |
Thomas Finnerup (06-01-2002)
| Kommentar Fra : Thomas Finnerup |
Dato : 06-01-02 15:59 |
|
On Sun, 6 Jan 2002 14:49:47 +0100, "SpookiePower"
<boxjunk2600@hotmail.com> wrote:
> Det virker nu.....men så er der opstået et problem et andet sted i mit
> program. Her prøver jeg at indlæse indholdet af Arrayet til en listbox.
> Det virkede fint med et Statisk Array. Men nu virker det ikke med et
> dynamisk array.
>
> begin
> For I := 1 to Length(Sortering) do
> Begin
> S := Sortering[I];
> ListBox1.Items.Add(S);
> end;
> end;
Husk at array-indexes som så meget andet starter ved 0. Prøv at
udskifte din For-linie med
For I := 0 to Length(Sortering) - 1 do
- Thomas
| |
SpookiePower (06-01-2002)
| Kommentar Fra : SpookiePower |
Dato : 06-01-02 16:25 |
|
"Thomas Finnerup" <TF@Picco.dk> wrote in message
news:dfpg3ukpjmgcuurnuluf2ug0qfflordop9@4ax.com...
> On Sun, 6 Jan 2002 14:49:47 +0100, "SpookiePower"
<Snip>
>
> Husk at array-indexes som så meget andet starter ved 0. Prøv at
> udskifte din For-linie med
>
> For I := 0 to Length(Sortering) - 1 do
>
> - Thomas
Tak skal du have.
| |
Uffe Kousgaard (06-01-2002)
| Kommentar Fra : Uffe Kousgaard |
Dato : 06-01-02 17:47 |
|
"SpookiePower" <boxjunk2600@hotmail.com> wrote in message
news:a19klu$2f2t$1@news.cybercity.dk...
> begin
> For I := 1 to Length(Sortering) do
> Begin
> S := Sortering[I];
> ListBox1.Items.Add(S);
> end;
> end;
>
Med mindre du kalder setlength én gang for hver linie, du læser fra
filen og dermed øger længden med én plads for hver gang, vil ovenstående
ikke virke, da length vil returnere et større antal end der er fyldt op.
Hvis du har lavet det, så pladsen øges med én af gangen, er det et
utroligt langsom program du har fået strikket sammen. Øg med 10% af
gangen eller lignende og hold så styr på antallet af linier, der
egentlig er læst ind. Det samme foregår også internt i TStringList, men
den er du nok afskåret fra at bruge til eksamen?
Hilsen
Uffe
| |
SpookiePower (06-01-2002)
| Kommentar Fra : SpookiePower |
Dato : 06-01-02 18:09 |
|
"Uffe Kousgaard" <uffe@routeware.dk> wrote in message
news:3c387f64$0$62897$edfadb0f@dspool01.news.tele.dk...
> > begin
> > For I := 1 to Length(Sortering) do
> > Begin
> > S := Sortering[I];
> > ListBox1.Items.Add(S);
> > end;
> > end;
> >
> Med mindre du kalder setlength én gang for hver linie, du læser fra
> filen og dermed øger længden med én plads for hver gang, vil ovenstående
> ikke virke, da length vil returnere et større antal end der er fyldt op.
<Snip>
Hvergang jeg læser een linie fra filen, øger jeg Array'et med een plads
SetLength(Sortering, I+1); // Kunne ikke få det til at virke uden +1.
Men når jeg så vil overføre indholdet fra Arrayet, vil der så ikke "bare"
være en
masse tomme pladser tilsidste i Arrayet. Men det vil da blive udskrevet til
skærmen alligevel.....med tomme pladser tilsidst.
> Hvis du har lavet det, så pladsen øges med én af gangen, er det et
> utroligt langsom program du har fået strikket sammen. Øg med 10% af
> gangen eller lignende og hold så styr på antallet af linier, der
> egentlig er læst ind. Det samme foregår også internt i TStringList, men
> den er du nok afskåret fra at bruge til eksamen?
>
> Hilsen
> Uffe
>
>
| |
PL (06-01-2002)
| Kommentar Fra : PL |
Dato : 06-01-02 14:51 |
|
Hej SpookiePower
Er der nogen speciel grund til, at du vil bruge 'Array of String'?
Umiddelbart er der den løsning med TStringlist, hvor der også er en
Sort-funktion med.
PL
| |
SpookiePower (06-01-2002)
| Kommentar Fra : SpookiePower |
Dato : 06-01-02 14:58 |
|
"PL" <jessie-peter@get2net.dk> wrote in message
news:a19krj$fkd$1@sunsite.dk...
> Hej SpookiePower
>
> Er der nogen speciel grund til, at du vil bruge 'Array of String'?
> Umiddelbart er der den løsning med TStringlist, hvor der også er en
> Sort-funktion med.
>
> PL
Ja, jeg skal snart til min første programmerings eksamen, så jeg sidder og
leger lidt med Arrays og prøver at bruge dem på forskellige måder.
| |
Niels Aage Schmidt (06-01-2002)
| Kommentar Fra : Niels Aage Schmidt |
Dato : 06-01-02 16:56 |
|
Bortset fra dette, er jeg helt enig i at TStringList bare er det helt
rigtige.
Jeg jonglerer rundt med ca. 200000 kodede tekststrenge i fire StringLists og
det går bare hurtigt og helt uden problemer.
Husk bare at Create og Free dem.
hilsen Niels Aage
"SpookiePower" <boxjunk2600@hotmail.com> skrev i en meddelelse
news:a19l54$2fmd$1@news.cybercity.dk...
>
> "PL" <jessie-peter@get2net.dk> wrote in message
> news:a19krj$fkd$1@sunsite.dk...
> > Hej SpookiePower
> >
> > Er der nogen speciel grund til, at du vil bruge 'Array of String'?
> > Umiddelbart er der den løsning med TStringlist, hvor der også er en
> > Sort-funktion med.
> >
> > PL
>
> Ja, jeg skal snart til min første programmerings eksamen, så jeg sidder og
> leger lidt med Arrays og prøver at bruge dem på forskellige måder.
>
>
| |
|
|