AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zum Pascal-Programmcode

Ein Thema von fcg · begonnen am 4. Jul 2006 · letzter Beitrag vom 4. Jul 2006
Antwort Antwort
fcg

Registriert seit: 15. Apr 2003
98 Beiträge
 
#1

Frage zum Pascal-Programmcode

  Alt 4. Jul 2006, 13:28
Hi

habe folgenden Pascalcode

Delphi-Quellcode:
     Zeichentyp = (z, b);

     AlphaNum = record
                        case Zeichentyp of
                          z: (ziffer: Ziffer);
                          b: (buchst: Buchstabe);
                      end;
kann damit aber leider wenig anfangen!? Könnt ihr mir erläutern, was damit gemeint seien könnte?

Gruß
fcg
.: Wer für alles offen ist, kann nicht ganz dicht sein! :.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Frage zum Pascal-Programmcode

  Alt 4. Jul 2006, 13:33
in deinem Fall sind die Records möglich:

Delphi-Quellcode:
//Wenn Zeichentyp den Wert "z" hat
record
Zeichentyp
ziffer
end;

//Wenn Zeichentyp den Wert "b" hat
record
zeichentyp
buchst
end;
Also je nachdem was für einen Wert "Zeichentyp" hat, ist eines der beiden anderen Elemente verfügbar.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Frage zum Pascal-Programmcode

  Alt 4. Jul 2006, 13:39
und wo steckt der Sinn von solchen Konstrukten?

Wir sind hier ja nicht bei "C", wo das Ziel ist, andere Leser des Quellcodes zu verwirren
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Frage zum Pascal-Programmcode

  Alt 4. Jul 2006, 13:43
.. man einen Wert auf verschiedene Weise interpretieren - das ist wohl der
Hauptgrund für solche Konstrukte.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Frage zum Pascal-Programmcode

  Alt 4. Jul 2006, 13:48
Arbeitsspeicherplatz zu sparen

da nur ein Teil des Records im Speicher reserviert werden muss und nicht das komplette Konstrukt
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
fcg

Registriert seit: 15. Apr 2003
98 Beiträge
 
#6

Re: Frage zum Pascal-Programmcode

  Alt 4. Jul 2006, 13:50
ja, sind halt Uni Aufgaben

Delphi-Quellcode:
type Ziffer = '0'..'9';

     Buchstabe = 'A'..'Z';

     Matrikelnummer = array [1..7] of Ziffer;

     Kennzeichen = record
                        stadt: array [1..3] of Buchstabe;
                        buchstaben: array [1..2] of Buchstabe;
                        zahl: Integer;
                      end;
          
     Zeichentyp = (z, b);

     AlphaNum = record
                        case Zeichentyp of
                          z: (ziffer: Ziffer);
                          b: (buchst: Buchstabe);
                      end;
Welche Werte kann dann eine Variable vom Typ Zeichentyp annehmen, da ja z,bb irgendwie nicht weiter definiert sind, oder?
.: Wer für alles offen ist, kann nicht ganz dicht sein! :.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Frage zum Pascal-Programmcode

  Alt 4. Jul 2006, 13:53
Moin Raven,

das Ganze nennt sich auch "Variante Records" (entspricht also, AFAIK, ungefähr, den Unions in C).
Sinn macht es vor allem dann, wenn Du mit den Records Daten aus Dateien ausliesen, bei denen bestimmte Stellen unterschiedliche Bedeutung haben können (z.B., wenn man Monitordaten, EDID, auslesen will, gibt es solche Stellen, bei denen ein Bereich einen String , oder aber auch andere Monitordaten enthalten kann).

Du musst dann nicht verschiedene Records deklarieren, und vorher prüfen welchen Record-Typ Du brauchst.

Normalerweise dürfen die varianten Teile nur am Ende des Records stehen.
Man kann sich aber mit einem "Trick" behelfen, indem man einfach einen Datentyp deklariert, der nur aus einem varianten Teil besteht, und diesen dann an beliebiger Stelle in einem anderen Record als Datentyp verwendet.

Nachteil:
Der variante Teil ist immer so lang, wie der längste Teil.

BTW:
Beim IBM 370-Assembler ist es vergleichbar mit der Dummy-Section.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Frage zum Pascal-Programmcode

  Alt 4. Jul 2006, 13:54
.. hier mal etwas zur Erhellung -> http://www.db.informatik.uni-kassel..../pas_recv.html

Grüße
Klaus

[edit] da war der Christian schneller [/edit]
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:40 Uhr.
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