Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

[Pascal] Redundanzen vermeiden!

Mitglied: edv-guru

edv-guru (Level 1) - Jetzt verbinden

03.04.2006, aktualisiert 11.05.2006, 4052 Aufrufe, 2 Kommentare

Hallo,
Ich habe da ein ganz primitives Pascal-Programm, das in der Dos-Konsole, je nachdem ob die rauf/runter/esc taste gedrückt wird, eine zeile heraufgeht/heruntergeht/beendet oder Höher/Tiefer geht's nicht anzeigt.
Jetzt soll ich durch herausheben Redundanzen vermeiden, hab aber keine Ahnung wie,weil ich keine Pascal spreche.
Hier mal so wie es funktionieren soll:

01.
uses crt,dos;
02.
 
03.
var                
04.
  znr : byte;      {Zeilennr.}
05.
  t : byte;        
06.
  zt : string;     
07.
  znr_str : string;{Zeilennr. als String}
08.
  meldung : string;
09.
 
10.
begin            
11.
 clrscr;
12.
 t := 0;
13.
 znr:=1;
14.
 meldung='';       
15.
 
16.
 
17.
{Ascii-Wert von Escape-Taste ==> 27}
18.
  while t <> 27 do begin
19.
    str(znr,znr_str);
20.
    zt:=' Zeile '+znr_str;
21.
    gotoxy(1,znr);
22.
    write(zt,meldung);
23.
  {warten auf eingabe}
24.
  while not keypressed do;
25.
 
26.
  while keypressed do begin
27.
    t:=ord(readkey);
28.
  end;
29.
 
30.
   if t=72 then begin
31.
      {str(znr,znr_str);
32.
      zt:=' Zeile '+znr_str;}
33.
      if znr=1 then begin
34.
      zt:=zt+' Hoeher gehts nicht ';
35.
      {Setze an Zeilenanfang}
36.
      gotoxy(1,znr);
37.
      write(zt,meldung);
38.
     end else begin
39.
      gotoxy(1,znr);
40.
      zt:='                              ';
41.
      write(zt,meldung);
42.
      znr:=znr-1;
43.
      str(znr,znr_str);
44.
      zt:=' Zeile '+znr_str;
45.
      gotoxy(1,znr);
46.
      write(zt,meldung);
47.
     end;
48.
   end;
49.
 
50.
    if t=80 then begin
51.
     {str(znr,znr_str);
52.
      zt:=' Zeile '+znr_str;}
53.
     if znr=25 then begin
54.
      zt:=zt+' Tiefer gehts nicht ';
55.
      {Setze an Zeilenende}
56.
      gotoxy(1,znr);
57.
      write(zt,meldung);
58.
     end else begin
59.
      gotoxy(1,znr);
60.
      zt:='                              ';
61.
      write(zt,meldung);
62.
      znr:=znr+1;
63.
      str(znr,znr_str);
64.
      zt:=' Zeile '+znr_str;
65.
      gotoxy(1,znr);
66.
      write(zt,meldung);
67.
     end;
68.
   end;
69.
  end;
70.
end.
71.
 
Und jetzt soll mittels einführen einer Variable namens meldung die redundanz entfernt werden.Dazu habe ich dieses Grundgerüst:

01.
uses crt,dos;
02.
 
03.
var                
04.
  znr : byte;      {Zeilennr.}
05.
  t : byte;        
06.
  zt : string;     
07.
  znr_str : string;{Zeilennr. als String}
08.
  meldung : string;
09.
 
10.
begin            
11.
 clrscr;
12.
 t := 0;
13.
 znr:=1;
14.
 meldung='';       
15.
 
16.
 
17.
  while t <> 27 do begin
18.
    str(znr,znr_str);
19.
    zt:=' Zeile '+znr_str;
20.
    gotoxy(1,znr);
21.
    write(zt,meldung);
22.
 
23.
  {warten auf eingabe}
24.
  while not keypressed do;
25.
 
26.
  while keypressed do begin
27.
    t:=ord(readkey);
28.
  end;
29.
 
30.
   if t=72 then begin
31.
      
32.
      if znr=1 then begin
33.
      zt:=zt+' Hoeher gehts nicht ';
34.
      
35.
      end else begin
36.
      
37.
      gotoxy(1,znr);
38.
      write('                                          ');
39.
      znr:=znr-1;
40.
      end;
41.
   end;
42.
 
43.
    if t=80 then begin
44.
      if znr=25 then begin
45.
        zt:=zt+' Tiefer gehts nicht ';
46.
      end else begin
47.
        gotoxy(1,znr);
48.
        write('                                       ');
49.
        znr:=znr+1;
50.
      end;
51.
   end;
52.
  end;
53.
end.
Hat jemand eine Idee? Wäre echt ganz toll ;)

Thx,
EDV-Guru
Mitglied: 8644
11.05.2006 um 16:59 Uhr
Hi EDV-Guru,

ich bin mir nicht sicher, ob ich verstanden habe, was du meinst, aber ich denke dein Zauberwort heisst Array! Ein Array ist ein Datenfeld, welches mehrere Werte eines Types (in Deinem Falle String) aufnehmen kann. Diese Werte werden dann über ihren Index angesprochen. Sprich, du benötigst noch eine Zählvariable und bei jedem Durchgang eine weitere Schleife, die das Array nach Übereinstimmungen durchsucht.

Im Klartext könnte das ungefähr so aussehen:

Variable n bei Programmstart auf 0 setzen
Bei jedem Lesen einer Zeile den Wert in das Array lesen: Feld[n] := Zeile;
Dann n inkrementieren: inc(n)
Nun eine Zählschleife, die das gesamte Array nach dem aktuellen Wert von Zeile "durchsucht". Das könnte ungefähr so aussehen:
For i := 0 To n Do Begin
If Zeile = Feld[i] Then ...
End


Falls das noch nicht hilft, mußt du dich nochmal melden, ich muß dann auf meinen Sohn warten, der gerade eine entsprechende Ausbildung macht und Pascal auf seinem Rechner hat

Psycho
Bitte warten ..
Mitglied: edv-guru
11.05.2006 um 21:02 Uhr
Danke dir für die Antwort.
Ich habe jetzt die Lösung bekommen, die darin besteht, dass der write-Befehl in eine Funktion ausgelagert wird.

P.s.:Was man nicht alles wissen muss......
P.p.s.:Normarlerweise wäre sowas in c-syntax kein problem für mich, aber Pascal ist mir doch ein wenig fremd.
Bitte warten ..
Ähnliche Inhalte
Netzwerke
Core-Switch redundanz erreichen
gelöst Frage von hash2k2Netzwerke7 Kommentare

Hallo zusammen, wir haben folgende Situation bei uns im Büro. Aktuell haben wir 7x HP 1810er Switches. Eins davon ...

Pascal und Delphi
Free Pascal Compiler - Stream read error
Frage von AnkhMorporkPascal und Delphi11 Kommentare

Hallo Alle und Moinsen System: Windows 7, x64 Free Pascal Compiler 3.0.4 Lazarus IDE 1.8.4 In der Hoffnung, hier ...

Pascal und Delphi

Script Pascal Buchstaben vor Zahl in bestimmter Länge

gelöst Frage von KnuefiPascal und Delphi7 Kommentare

Hallo zusammen, ich habe eine Frage zu einen Pascal Script. Ich versuche automatisch bei Zahlen einen oder zwei Buchstaben ...

Hyper-V

Hardware und Lizenzfrage: Hyper-V Umgebung um Redundanz erweitern

gelöst Frage von KnorkatorHyper-V10 Kommentare

Hallo zusammen, wir haben derzeit 3 Hyper-V 2012 Server auf denen insgesamt 18 Vms laufen. Neben einigen Debian Servern ...

Neue Wissensbeiträge
Humor (lol)
Administrator.de Perlen
Tipp von DerWindowsFreak2 vor 2 TagenHumor (lol)3 Kommentare

Hallo, Heute beim stöbern auf dieser Seite bin auf folgenden Thread aus dem Jahre 2006 gestossen: Was meint ihr? ...

Erkennung und -Abwehr
OpenSSH-Backdoor Malware erkennen
Tipp von Frank vor 3 TagenErkennung und -Abwehr

Sicherheitsforscher von Eset haben 21 Malware-Familien untersucht. Die Malware soll Hintertüren via OpenSSH bereitstellen, so dass Angreifer Fernzugriff auf ...

iOS
WatchChat für Whatsapp
Tipp von Criemo vor 6 TageniOS5 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor!
Tipp von Criemo vor 6 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
PCIe 1.0 Grafikkarte für 3840x2160
Frage von Windows10GegnerGrafikkarten & Monitore29 Kommentare

Hallo, mein Vater hat einen neuen Monitor gekauft, welcher eine native Auflösung von 3840*2160 hat. Diese muss jetzt auch ...

Windows Server
Dienstnamen und oder Deutsche und Englische Beschreibung in services.msc gleichzeitig anzeigen
gelöst Frage von vafk18Windows Server23 Kommentare

Guten Morgen, die Suche nach Diensten in services.msc gestaltet sich immer wieder schwierig, weil mir je nach Aufgabe die ...

Windows 10
Windows Enterprise 1809 Eval nicht bootbar
Frage von Sunny89Windows 1022 Kommentare

Hallo zusammen, bevor ich mich jetzt noch stundenlang rumärger wollte ich euch fragen, ob Ihr die gleichen Probleme habt ...

Linux
Info Monitor für eine Schule
gelöst Frage von CAT404Linux13 Kommentare

Moin, ich möchte einen Infomonitor betreiben; derzeit läuft da ein Windows 10 Rechner bei dem Firefox beim Start in ...