Welcome to Schneider / Amstrad CPC Forum. Please login or sign up.

19. April 2024, 19:03:33

Login with username, password and session length

Shoutbox

TFM

2024-04-08, 20:42:44
Happy Sonnenfinsternis!  :)

TFM

2024-01-15, 17:06:57
Momentan billige Farbbänder auf Ebay für PCW

Devilmarkus

2023-07-09, 10:37:40
Zweiter 👋😂🤣

TFM

2023-06-13, 14:21:49
Sommerloch!

TFM

2023-05-30, 17:00:20
Erster ;-)

Recent

Members
Stats
  • Total Posts: 11,695
  • Total Topics: 1,336
  • Online today: 185
  • Online ever: 1,724
  • (16. January 2020, 00:18:45)
Users Online
Users: 1
Guests: 142
Total: 143

142 Guests, 1 User
xesrjb

BRAUCHE HILFE - Problem mit ein Program abschnitt

Started by FirstDefender, 14. January 2023, 14:59:38

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

FirstDefender

Hallo @all

Ich habe ein kleines problem bei meinem Programm und
hoffe das es jemand giebt der mir bei dem Problem helfen kann.

Ich bin dabei ein Adressen Programm zu schreiben.

Nun soll überprüft werden ab es ein Doppelter Name ist. (Vor.-Nachname)

Listing:
feld=Datensatz
1070 LOCATE 18,5:INPUT"Vorname :",adr$(feld,1)
1080 IF adr$(feld,1)="" THEN 1180
1090 LOCATE 41,5:INPUT"Nachname :",adr$(feld,2)
1095 FOR a=1 TO feld:IF adr$(a,1)=adr$(feld,1) AND adr$(a,2)=adr$(feld,2) THEN 1096 ELSE 1100
1096 LOCATE 2,24:PRINT"    Name schon vorhanden           ":
1097 feld=feld:GOTO 1000

Das klappt auch soweit. Aber wenn es wieder in Zeile 1070 zurück
geht wird nicht neues eingetragen .Sprich keine neue Adresse.
Es können alle Daten Eingegeben werden. Sobald ein neuer Name
Eingegeben wird Zeile 1080 ausgefüht.
Ich habe schon einiges versucht aber es ist immer das selbe Ergebniss.
Hat jemand ne idee

TFM

Erst mal Herzlich Willkommen im Forum!  :00008351:

Zum Programm...
- Dem würde mal ein RENUM gut tun, zwecks der Übersichtlichkeit
- Leider sieht man nicht wohin die Sprünge gehen, deshalb ist es schwer zu sagen wo Fehler liegen könnten

- Zeile 1080: 1080 IF adr$(feld,1)="" THEN 1180
Ist da ein Tippfehler drin und es sollte heißen:
1080 IF adr$(feld,1)="" THEN 1080

- Zeile 1097: 1097 feld=feld:GOTO 1000
Sollte das hier feld=feld+1 oder feld=feld-1 heissen???
feld=feld hat keine Funktion.


Viel Glück bei der Programmentwicklung!  :smiley027:
Zur Problem-Lösung: Die Variable 'feld' muss angepasst werden, für jeden neuen Datensatz.
TFM of FutureSoft
http://www.futureos.de --> Das Betriebssystem FutureOS (Update: 20.12.2023)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 26.12.2021)

FirstDefender

#2
her mal der Teil zur Daten Eingabe

1000 ' ******************* Daten Eingabe
1010 menuname$="Daten Eingabe":druck$="on":GOSUB 10510:druck$="off" -- Daten Eingabe und Ausgabe Layer

1020 WINDOW #2,2,79,5,21:GOSUB 10680
1025 LOCATE 50,2:PRINT"Datensatz : ";feld" von ";dat-1
1030 LOCATE 2,24:PRINT"RETURN um die Eingabe zu beenden"
1040 FOR feld=dat TO 100
1050 adr$(feld,11)=aktdatum$:adr$(feld,12)=aktdatum$ 
1060 LOCATE 18,13:PRINT"Erstaelt am";adr$(feld,11):LOCATE 18,14:PRINT"Geaendert am";adr$(feld,12)
1070 LOCATE 18,5:INPUT"Name",adr$(feld,1)
1080 IF adr$(feld,1)="" THEN 1180
1090 LOCATE 41,5:INPUT"Nachname",adr$(feld,2)
1095 FOR a=1 TO feld:IF adr$(a,1)=adr$(feld,1) AND adr$(a,2)=adr$(feld,2) THEN 1096 ELSE 1100
1096 LOCATE 2,24:PRINT"    Name schon vorhanden           ":GOSUB 10860  -- Kurz warten
1097 feld=feld:GOTO 1000
1100 LOCATE 18,6:INPUT"Strasse",adr$(feld,3)
1110 LOCATE 18,7:INPUT"PLZ",adr$(feld,4):LOCATE 41,7:INPUT"Ort",adr$(feld,5)
1120 LOCATE 18,8:INPUT"",adr$(feld,6)
1130 LOCATE 18,9:INPUT"",adr$(feld,7)
1140 LOCATE 18,10:INPUT"",adr$(feld,8)
1150 LOCATE 18,11:INPUT"",adr$(feld,9)
1160 LOCATE 18,12:INPUT"",adr$(feld,10) 
1170 CLS#2:GOSUB 10680:NEXT        -- Unter Routine
1180 LOCATE 2,24:PRINT"    keine weiteren Eingabe         ":dat=feld
1190 GOSUB 10860:GOTO 430            -- Kurz warten dann zum Hauptmenu

vieleicht hielft das weiter.

Nachtrag : Ich glaube den Fehler gefunden zu haben
Und zwar hier

1095 FOR a=1 TO feld:IF adr$(a,1)=adr$(feld,1) AND adr$(a,2)=adr$(feld,2) THEN 1096 ELSE 1100
1096 LOCATE 2,24:PRINT"    Name schon vorhanden           ":GOSUB 10860  -- Kurz warten
1097 feld=feld:GOTO 1000

es fehlt ein NEXT aber wo muss ich das eintragen ?

FirstDefender