Autor Beitrag
bLaSpHeMy
Hält's aus hier
Beiträge: 1


D7 Pers
BeitragVerfasst: Di 13.07.04 22:34 
Guten Abend,

ich habe mich heute mal mit DLLs beschäftigt und bin doch auf einige Probleme gestoßen. Einige konnt ich bis jetzt selber lösen, aber jetzt hab ich wieder ein Problem und dies mal find ich einfach keine Lösung.

Zur Thematik, ich besitze zwei Arrays aus zwei Recordtypen, die hier zu bewundern sind:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
type

  TAnzahl = Record
    Strassen: Integer;
    Stadtteile: Integer;
    end;

  TSwk = Record
    Name: String[100];
    Strasse: String[100];
    Stadtteil: String[30];
    end;

  TVw = Record
    Verbindung: String[100];
    Stadtteile: Array[0..20of String[30];
    Strassen: Array[0..40of String[65];
    Anzahl: TAnzahl;
    end;


Diese schreibe ich per File of Tvw oder Tswk in eine Datei und lese sie so auch wieder aus. Nun wollte ich die Routinen zum Speichern und Laden der Datensätze des Arrays allerdings in einer DLL auslagern. So weit so gut, die Schreibroutine funktioniert auch schon und sieht so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
function Schreibe_Swk_Datei(Daten: Array of Tswk; Dateiname: ShortString): boolean; Register;
var x: Integer;
begin

             if FileExists(Dateiname) then

                try

                    AssignFile(Swk_Datei, Dateiname);

                    ReWrite(Swk_Datei);

                        for x:= 0 to length(Daten)-1 do
                          Write(Swk_Datei, Daten[x]);

                    closefile(Swk_Datei);

                    result := true;

                except

                    result := false;
                end;
end;


Allerdings funktioniert meine Leseroutine nicht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
function Lese_Swk_Datei(var Daten: Array of Tswk; Dateiname: ShortString): boolean; Register;
var x: Integer;
begin

        if FileExists(Dateiname) then

            try

                x := Length(Daten);
                AssignFile(Swk_Datei, Dateiname);      // Nicht NET tauglich ...
                ReSet(Swk_Datei);

            // SetLength(Daten, length(Daten)+FileSize(Swk_Datei));

                while not eof(Swk_Datei) do begin

                      Read(Swk_Datei, Daten[x]);
                      Inc(x);
                    end;

                closefile(Swk_Datei);

                result := true;

            except

                result := false;
            end;
end;


Bei der auskommentierten Zeile // SetLength(Daten, length(Daten)+FileSize(Swk_Datei)); bekomme ich den Fehler, dass es unkompatible Typen sein, ich muss aber die Länge des Arrays vergrößern, da sonst keine Datensätze gelesen werden können ...

Wäre für jede Hilfe dankbar :)


Ps: Die Suchfunktion mit den Worten "Array DLL" hab ich schon benutzt und ergab kein wirklich sinnvolles Ergebnis für mich :/


Mfg ...


Ich war wohl etwas voreilig -> nach intensiver Suche hab ich das hier gefunden :oops: