globale Datentypen definieren

Für Fragen von Einsteigern und Programmieranfängern...

globale Datentypen definieren

Beitragvon Kieler » 1. Mär 2018, 16:09 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.
Kieler
 
Beiträge: 17
Registriert: 22. Mär 2014, 11:58
Wohnort: Kiel
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon m.fuchs » 1. Mär 2018, 17:10 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
m.fuchs
 
Beiträge: 1946
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon Kieler » 1. Mär 2018, 17:12 Re: globale Datentypen definieren

Im Interface von meiner neuen ausgelagerten Unit?
Das macht Sinn.

Ich habe es nicht der Hauptunit gemacht.
Kieler
 
Beiträge: 17
Registriert: 22. Mär 2014, 11:58
Wohnort: Kiel
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon Kieler » 1. Mär 2018, 17:15 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?
Kieler
 
Beiträge: 17
Registriert: 22. Mär 2014, 11:58
Wohnort: Kiel
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon m.fuchs » 1. Mär 2018, 17:22 Re: globale Datentypen definieren

Kieler hat geschrieben:Im Interface von meiner neuen ausgelagerten Unit?

Im Interface der Unit, die alle Programmteile einbinden in denen du diesen Typ nutzen möchtest.

Kieler hat geschrieben:Das macht Sinn.

Waaaaaaaaah.

Kieler hat geschrieben:Ich habe es in der Hauptunit gemacht.

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:Was muss ich hier im Forum angeben, damit etwas als Code angezeigt wird?

Da gibt es ob ein Dropdown namens Highlighter. Dort Freepascal/Lazarus auswählen und schon werden passende Tags eingefügt.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1946
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon Kieler » 1. Mär 2018, 17:27 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?
Kieler
 
Beiträge: 17
Registriert: 22. Mär 2014, 11:58
Wohnort: Kiel
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon m.fuchs » 1. Mär 2018, 17:29 Re: globale Datentypen definieren

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?

Ja.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1946
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon Kieler » 1. Mär 2018, 17:32 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.
Kieler
 
Beiträge: 17
Registriert: 22. Mär 2014, 11:58
Wohnort: Kiel
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon m.fuchs » 1. Mär 2018, 17:33 Re: globale Datentypen definieren

Deswegen gibt es das Forum ja :)
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1946
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon Mathias » 1. Mär 2018, 17:51 Re: globale Datentypen definieren

Ich denke mal, du hast einfach eine sehr grosse Array definiert, so das möglichst viele CSV-Dateien abdeckt.
Code: Alles auswählen
type
  Daten = array[1..8000,0..20] of string;

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 of array of string;
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3986
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Kieler » 1. Mär 2018, 20:00 Re: globale Datentypen definieren

Interessant. Muss ich dazu etwas in meinem Programm machen oder wird die Größe selbständig erkannt.
Kieler
 
Beiträge: 17
Registriert: 22. Mär 2014, 11:58
Wohnort: Kiel
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon mse » 1. Mär 2018, 20:18 Re: globale Datentypen definieren

Kieler hat geschrieben:Interessant. Muss ich dazu etwas in meinem Programm machen

Ja, siehe hier:
https://www.freepascal.org/docs-html/cu ... 510003.3.1
mse
 
Beiträge: 1931
Registriert: 16. Okt 2008, 09: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
Nach oben

Beitragvon Mathias » 1. Mär 2018, 20:44 Re: globale Datentypen definieren

Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3986
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Kieler » 2. Mär 2018, 10:57 Re: globale Datentypen definieren

Ich bin zu blöd. Jetzt habe ich es in meiner UNIT wie folgt eingebunden:

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 


Lazarus bringt dann folgende Fehlermeldung : Fatal: Syntax error, "IMPLEMENTATION" expected but "USES" found

Warum?
Kieler
 
Beiträge: 17
Registriert: 22. Mär 2014, 11:58
Wohnort: Kiel
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon m.fuchs » 2. Mär 2018, 11:05 Re: globale Datentypen definieren

Pack mal den uses-Block vor den type-Block.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1946
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

» Weitere Beiträge siehe nächste Seite »
Nächste

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried