![]() |
Öffnen einer txt datei funktioniert als Funktion nicht
Hi Leute!
Ich hatte folgenden Ablauf zum Öffnen einer Textdateiin meinem Programm. Da ich dieses jetzt öfters brauche, wollte ichs als Procedure speichern aber da meckert er rum, wenn ich die Länge der dynamischen arrays festlege. Wie kann man das beheben? Der Quellcode:
Delphi-Quellcode:
Danke!
procedure oeffnen(ort:string;var sd_takt,sd_v,sd_ende:integer;var sd_laenges,sd_hoehes:array of integer;var test_klick:boolean);
var sd_schnitt:Textfile; sd_hoehe,sd_laenge:array of integer; sd_ton:array of string; sd:integer; begin AssignFile(sd_schnitt,ort); Reset (sd_schnitt); readln(sd_schnitt,sd_takt); readln(sd_schnitt,sd_v); readln(sd_schnitt,sd_ende); setlength(sd_ton,sd_ende); setlength(sd_laenge,sd_ende); setlength(sd_hoehe,sd_ende); for sd:=0 to sd_ende -1 do begin readln(sd_schnitt,sd_ton[sd]); sd_hoehe[sd]:=strtoint(copy(sd_ton[sd],1,2)); sd_laenge[sd]:=strtoint(copy(sd_ton[sd],3,1)); end; closefile(sd_schnitt); test_klick:=false; end; |
Re: Öffnen einer txt datei funktioniert als Funktion nicht
Was bedeutet meckern?
|
Re: Öffnen einer txt datei funktioniert als Funktion nicht
also delphi gibt einen fehler aus und complementiert nicht weiter. delphi meit, das diese beiden typen nicht übereinstimmen. Somit kann dem dynamischen array keinem wert zugewiesen weden.
|
Re: Öffnen einer txt datei funktioniert als Funktion nicht
Zitat:
|
Re: Öffnen einer txt datei funktioniert als Funktion nicht
"Incompatible Types" bei
setlength(sd_laenge,sd_ende); setlength(sd_hoehe,sd_ende); |
Re: Öffnen einer txt datei funktioniert als Funktion nicht
Hi,
Ich rate jetzt einfach mal und sage du musst es so machen:
Delphi-Quellcode:
Wenn ich falsch liege, dann wäre wie gesagt eine genauere Fehlerbeschreibung nicht schlecht ;)
type
TIntArray: Array of Integer; procedure oeffnen(ort:string;var sd_takt,sd_v,sd_ende:integer;var sd_laenges,sd_hoehes: TIntArray;var test_klick:boolean); |
Re: Öffnen einer txt datei funktioniert als Funktion nicht
Delphi-Quellcode:
Du liest sd_ende als String aus, nicht als Integer.
readln(sd_schnitt,sd_v);
readln(sd_schnitt,sd_ende); // sd_schnitt ist eine TextDatei setlength(sd_ton,sd_ende); setlength(sd_laenge,sd_ende); setlength(sd_hoehe,sd_ende); Du hast sd_ende wohl als Integer deklariert aber willst es als String nutzen. Also einen String einlesen, in einen Integer wandeln und weiterverwenden. Grüße Klaus |
Re: Öffnen einer txt datei funktioniert als Funktion nicht
das der fehler daran liegt, kann nicht sein, da genau dieser ablauf vorher ohne procedure deklerastion in einer neuen unit funktionier hat!
habs aber trotzdem probiert und er gibt immernoch den selbsen fehler aus! |
Re: Öffnen einer txt datei funktioniert als Funktion nicht
Hallo Anna,
dein Code aus Beitrag #1 lässt sich bei mir einwandfrei übersetzen. Welche Delphi-Version verwendest du? Grüße vom marabu |
Re: Öffnen einer txt datei funktioniert als Funktion nicht
Hallo,
gut, ich nehme alles zurück und behaupte das Gegenteil. Bei mir funktioniert der Code:
Delphi-Quellcode:
So rufe ich ihn auf:
procedure oeffnen(ort:string;var sd_takt,sd_v,sd_ende:integer;var sd_laenges,sd_hoehes:array of integer;var test_klick:boolean);
var sd_schnitt:Textfile; sd_hoehe,sd_laenge:array of integer; sd_ton:array of string; sd:integer; begin AssignFile(sd_schnitt,ort); Reset (sd_schnitt); readln(sd_schnitt,sd_takt); readln(sd_schnitt,sd_v); readln(sd_schnitt,sd_ende); setlength(sd_ton,sd_ende); setlength(sd_laenge,sd_ende); setlength(sd_hoehe,sd_ende); for sd:=0 to sd_ende -1 do begin readln(sd_schnitt,sd_ton[sd]); sd_hoehe[sd]:=strtoint(copy(sd_ton[sd],1,2)); sd_laenge[sd]:=strtoint(copy(sd_ton[sd],3,1)); end; closefile(sd_schnitt); end;
Delphi-Quellcode:
So sieht meine Typendeklaration aus:
oeffnen('d:\test.txt',takt,v,ende,testArray1,testArray2,test_klick);
Delphi-Quellcode:
Grüße
type
IArray = Array of Integer; TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private testArray1: IArray; testArray2: IArray; takt,v,ende: Integer; test_klick: Boolean; { Private declarations } public { Public declarations } end; Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz