globale Datentypen definieren
-
- Beiträge: 17
- Registriert: Sa 22. Mär 2014, 11:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Kiel
globale Datentypen definieren
Moin,
ich habe wieder ein typisches Anfängerproblem.
Ich habe in meinem Programm eine procedure geschrieben, welche csv Dateien in Array schreibt oder liest. Da ich an die procedure kein Array übergeben kann, habe ich ich einen neuen Type definiert:
type
Daten = array[1..8000,0..20] of string;
Das funktioniert auch ganz prima. Nun möchte ich diese Procedure in eine Unit auslagern, aber wie kann ich auf meinen neuen Datentyp "Daten" aus allen Units zugreifen. Ich habe schon mit public experimentiert. Klappt aber nicht.
ich habe wieder ein typisches Anfängerproblem.
Ich habe in meinem Programm eine procedure geschrieben, welche csv Dateien in Array schreibt oder liest. Da ich an die procedure kein Array übergeben kann, habe ich ich einen neuen Type definiert:
type
Daten = array[1..8000,0..20] of string;
Das funktioniert auch ganz prima. Nun möchte ich diese Procedure in eine Unit auslagern, aber wie kann ich auf meinen neuen Datentyp "Daten" aus allen Units zugreifen. Ich habe schon mit public experimentiert. Klappt aber nicht.
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: globale Datentypen definieren
Wo hast du diesen Typ den definiert? Das muss im Interface-Teil der Unit erfolgen. Dann können auch andere Programmteile diesen Typ nutzen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 17
- Registriert: Sa 22. Mär 2014, 11:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Kiel
Re: globale Datentypen definieren
Im Interface von meiner neuen ausgelagerten Unit?
Das macht Sinn.
Ich habe es nicht der Hauptunit gemacht.
Das macht Sinn.
Ich habe es nicht der Hauptunit gemacht.
-
- Beiträge: 17
- Registriert: Sa 22. Mär 2014, 11:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Kiel
Re: globale Datentypen definieren
Ich wollte schreiben, dass ich es in der Hauptunit gemacht habe.
Was muss ich hier im Forum angeben, damit etwas als Code angezeigt wird?
Was muss ich hier im Forum angeben, damit etwas als Code angezeigt wird?
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: globale Datentypen definieren
Im Interface der Unit, die alle Programmteile einbinden in denen du diesen Typ nutzen möchtest.Kieler hat geschrieben:Im Interface von meiner neuen ausgelagerten Unit?
Waaaaaaaaah.Kieler hat geschrieben:Das macht Sinn.
Dann kannst du den Typen nur in der Hauptunit nutzen. Also ich gehe mal davon aus, dass keine andere Unit diese Hauptunit im uses stehen hat.Kieler hat geschrieben:Ich habe es in der Hauptunit gemacht.
Da gibt es ob ein Dropdown namens Highlighter. Dort Freepascal/Lazarus auswählen und schon werden passende Tags eingefügt.Kieler hat geschrieben:Was muss ich hier im Forum angeben, damit etwas als Code angezeigt wird?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 17
- Registriert: Sa 22. Mär 2014, 11:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Kiel
Re: globale Datentypen definieren
Irgendwie verstehen ich deine Antwort nicht.
Ich habe eine neue Unit CSV erstellt. Diese rufe ich in der Unit1 auf. Natürlich auch mit uses.
Ich muss meine neuen Datentyp in der Unit CSV definieren. Richtig?
Ich habe eine neue Unit CSV erstellt. Diese rufe ich in der Unit1 auf. Natürlich auch mit uses.
Ich muss meine neuen Datentyp in der Unit CSV definieren. Richtig?
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: globale Datentypen definieren
Ja.Kieler hat geschrieben:Ich habe eine neue Unit CSV erstellt. Diese rufe ich in der Unit1 auf. Natürlich auch mit uses.
Ich muss meine neuen Datentyp in der Unit CSV definieren. Richtig?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 17
- Registriert: Sa 22. Mär 2014, 11:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Kiel
Re: globale Datentypen definieren
Vielen Dank, für die schnelle Unterstützung. Manchmal verrennt man sich alleine einfach. Gerade wenn man anfängt. Da helfen auch Bücher und Google manchmal nicht mehr.
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: globale Datentypen definieren
Deswegen gibt es das Forum ja 

Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 6914
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: globale Datentypen definieren
Ich denke mal, du hast einfach eine sehr grosse Array definiert, so das möglichst viele CSV-Dateien abdeckt.
Unter Lazarus gibt es dynamische Arrays, bei denen man die Grösse erst zur Laufzeit definiert.
Das sieht dann so aus:
Code: Alles auswählen
type
Daten = array[1..8000,0..20] of string;
Das sieht dann so aus:
Code: Alles auswählen
type
Daten = array of array of string;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 17
- Registriert: Sa 22. Mär 2014, 11:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Kiel
Re: globale Datentypen definieren
Interessant. Muss ich dazu etwas in meinem Programm machen oder wird die Größe selbständig erkannt.
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: globale Datentypen definieren
Ja, siehe hier:Kieler hat geschrieben:Interessant. Muss ich dazu etwas in meinem Programm machen
https://www.freepascal.org/docs-html/cu ... 510003.3.1
-
- Beiträge: 6914
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: globale Datentypen definieren
Im Wiki gibt es dies auch in deutsch.Ja, siehe hier:
https://www.freepascal.org/docs-html/cu ... 510003.3.1
http://wiki.freepascal.org/Array/de#Kei ... r.C3.B6sse
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 17
- Registriert: Sa 22. Mär 2014, 11:58
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Kiel
Re: globale Datentypen definieren
Ich bin zu blöd. Jetzt habe ich es in meiner UNIT wie folgt eingebunden:
Lazarus bringt dann folgende Fehlermeldung : Fatal: Syntax error, "IMPLEMENTATION" expected but "USES" found
Warum?
Code: Alles auswählen
unit CSV;
{$mode objfpc}{$H+}
interface
type
Daten = array[1..8000,0..20] of string;
procedure LESEN (QuellName : string; var ZielFeld : Daten; var Zeilen : Integer);
procedure SCHREIBEN (ZielName : string; var QuellFeld : Daten; var Zeilen : Integer; var Spalten : Integer);
uses
Classes, SysUtils;
implementation
Warum?
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: globale Datentypen definieren
Pack mal den uses-Block vor den type-Block.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de