Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zur Funktion Explode (https://www.delphipraxis.net/24411-frage-zur-funktion-explode.html)

Cyberbob_at_tot 20. Jun 2004 18:21


Frage zur Funktion Explode
 
Hallo zusammen,
habe die Funktionen nutzen wollen um einen String aus einer TXT datei zu splitten,
so funktioniert es auch gut. Mein Problem ist dabei, wie kann ich das Result Array auserhalb der Funktion aufrufen? Wenn ich auserhalt Result[x] verwenden will, sagt er...
[Fehler] DVDUnit.pas(176): Undefinierter Bezeichner: 'result'

Wenn ich dann in der Funktion selber das Array in mein eigenes Array (Record Typ mit Array) übertragen will bricht er in der Runtime ab(Zugriffsverletzung bei...usw.)

DVD.Titel[1]:=Result[1];

So wollt ich das ergebnis der Funktion in mein array übertragen aber es geht nicht!
Weis nun auch leider nicht weiter, wie kann ich Result, öffentlich machen ? Die Deklaration der Funktion (Function explode(const Separator,S: string;Limit:Integer = 4):TStringDynArray;) steht vor Var.

Kann mir jemand helfen ? weis erlich nicht weiter! häng da einfach! :(

BIG THX

Cyberbob

fkerber 20. Jun 2004 18:24

Re: Frage zur Funktion Explode
 
Hi!

Herzlich Willkommen in der DP.

Kannst du evtl. dein Problem etwas näher erläutern? Komme da nicht so ganz mit.
Und vor allem deinen Code von Explode und Aufruf etc. posten?

Danke.

Ciao fkerber

Cyberbob_at_tot 20. Jun 2004 18:30

Re: Frage zur Funktion Explode
 
Liste der Anhänge anzeigen (Anzahl: 1)
Klar kann ich machen, befor ich es hier aber genau erkläre lad ich einfacher weise einfach den Queltest hoch! liegt als rar datei bei!

mir gehts dabei das ich Result der Funktion explode auserhalb abrufen kann, oder direkt in der Funktion in mein DVD Array speichern kann. Schau es dir einfach mal an!

Leider müßten wirda so machen, würde ja gerne die BDE von Delphi nutzen aber das wäre ja zu einfach! :P

fkerber 20. Jun 2004 18:56

Re: Frage zur Funktion Explode
 
Hi!

Delphi-Quellcode:
Procedure TForm1.einlesen();
Var
zeile:String;
zwischenarray: TStringDynArray;
Begin
assignfile(db,dbfile);
reset(db);
While not eof(db) do
Begin
readln(db,Zeile);
zwischenarray:=explode(',',Zeile);
DVD.Titel[zaehler]:=zwischenarray[1];
zaehler:=zaehler+1;
//ausgabe(1);
end;
Es kommen aber noch andere Fehler und dein Code sieht für mich grausam aus, nicht persönlich nehmen, aber so viele ///////////// und keine Einrückungen etc.
Er kann irgendwie die "Datenbank" bei mir nicht laden.

Ciao fkerber

Cyberbob_at_tot 20. Jun 2004 19:02

Re: Frage zur Funktion Explode
 
bin ja auch noch nicht fertig. Zumindest das mit den // wird uns so begebracht, da wir fast alles komentieren müßten, finde ich auch scheiße aber was sols!

du musst den Pfad zu der TXT datei noch anpassen, dann müßte es gehen!

Cyberbob_at_tot 20. Jun 2004 19:26

Re: Frage zur Funktion Explode
 
Liste der Anhänge anzeigen (Anzahl: 1)
Habe den Quelltext mal umgeändert aber es kommt immer noch diese Fehlermeldung wenn er die Zeile...
DVD.Titel[zaehler]:=zwischenarray[1];
ausführen will!

MrKnogge 20. Jun 2004 19:41

Re: Frage zur Funktion Explode
 
poste mal bitte deinen aktuellen Code.

fkerber 20. Jun 2004 19:44

Re: Frage zur Funktion Explode
 
Hi!

So sollte es gehen:

Delphi-Quellcode:
Procedure TForm1.einlesen();
Var
zeile:String;
zwischenarray: TStringDynarray;
Begin
assignfile(db,dbfile);
reset(db);
While not eof(db) do
Begin
setlength(DVD.titel, zaehler+2);        <-- HIER
readln(db,Zeile);
setlength(zwischenarray, 4);
zwischenarray:=explode(',',Zeile);
showmessage(zwischenarray[1]);
DVD.Titel[zaehler]:=zwischenarray[1];
zaehler:=zaehler+1;
end;
///Arraygröße neu setzen/////////
setlength(DVD.Nummer,zaehler);
//setlength(DVD.Titel,zaehler);
setlength(DVD.FSK,zaehler);
setlength(DVD.zusatz,zaehler);


/////////////////////////////////
closefile(db);
Label1.Caption:='Datensatz : 0 - ' + inttostr(zaehler);
End;
/////////////////////////////////////////////////////////////

Cyberbob_at_tot 20. Jun 2004 19:53

Re: Frage zur Funktion Explode
 
Super so gehts, nur so gang habe ich das nicht verstanden, wieso muss ich beim Setzen der Größe des Arrays, den Zähler plus 2 nehmen ? das ich das Array in der Schleife vergrößern muss, habe ich voll übersehen.
Und wieso muss ich über das Zwischenarray gehen? kann ich es nicht einfach direkt schreiben ?

fkerber 20. Jun 2004 20:01

Re: Frage zur Funktion Explode
 
Hi!

+2 war an sich falsch, +1 reicht.
Liegt daran, dass Zaehler vorher 0 ist und ein Array auf die Länge 0 zu setzen ist nicht wirklich effektiv :mrgreen:

Wegen dem zwischenarray, also explode liefert sowas:

Code:
result[0]
result[1]
resulr[2]
result[3]
Und das für jede Zeile. Also weißt du das dem Zwischenarray zu, um so sozusagen an result[1] zu kommen.
Kann es leider nicht anders erklären.

Ciao fkerber


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz