 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Keks
Anmeldungsdatum: 03.11.2007 Beiträge: 156 Wohnort: Dose
|
Verfasst am: 16.04.2008, 15:54 Titel: Unverträgliche Anzahl von Argumenten |
|
|
Code: | DECLARE SUB file(filename$, num, x, y, click, edit)
DIM filename(100) AS STRING
CALL file(filename(i))
SUB file(filename$)
END SUB |
Wo ist da der Fehler? _________________ RUN "brain.exe"
Datei nicht gefunden |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 16.04.2008, 16:06 Titel: |
|
|
*Keks pack*
*keks aus dem fenster schmeiß*
die oberste declare zeile passt nicht
die muss declare sub file(filename$) heißen
schaut mir nach
1) sub mit 6 parametern schreiben
2) was anderes machen
3) die sub auf 1 param umproggen
4) nicht mit enter abschließen
dann kommt qb durcheinander
im zweifelsfalle alle declares löschen, die legt qb schon wieder an (und zwar richtig!) _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 16.04.2008, 16:07 Titel: |
|
|
Ganz einfach: Du deklarierst eine Sub, die 6 Parameter erwartet, willst dann in der Definition aber nur einen Parameter angeben. Die Zahl und Reihenfolge der Parameter muß bei Deklaration und Definition gleich sein.
Es sei denn, Du willst zwei verschiedene Funktionen mit dem gleichen Namen erstellen. Das funktioniert nur in FreeBasic mit Overload. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
Keks
Anmeldungsdatum: 03.11.2007 Beiträge: 156 Wohnort: Dose
|
Verfasst am: 16.04.2008, 16:25 Titel: |
|
|
Ups nein habe das ganze gekürzt, damit es besser lesbar ist.
Ja und ich habe wohl nachdem ich was hinzugefügt hatte vergessen, es auch beim Aufruf zu ändern.
Jetzt kommt aber bei
CALL file(filename(i), num, AusReg.CX, AusReg.DX, AusReg.BX, 0) ein
unveträgliche Parametertypen, markiert ist .BX, 0
Warum das jetzt? _________________ RUN "brain.exe"
Datei nicht gefunden |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 16.04.2008, 16:44 Titel: |
|
|
Hachja, immer das lustige Rätselraten... Poste den ganzen Sourcecode, der die Sub File betritt... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 16.04.2008, 16:51 Titel: |
|
|
Keks hat Folgendes geschrieben: | Ups nein habe das ganze gekürzt, damit es besser lesbar ist.
Ja und ich habe wohl nachdem ich was hinzugefügt hatte vergessen, es auch beim Aufruf zu ändern.
Jetzt kommt aber bei
CALL file(filename(i), num, AusReg.CX, AusReg.DX, AusReg.BX, 0) ein
unveträgliche Parametertypen, markiert ist .BX, 0
Warum das jetzt? |
Klassischer Fall von mangelhafter Fragestellung...  _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
Keks
Anmeldungsdatum: 03.11.2007 Beiträge: 156 Wohnort: Dose
|
Verfasst am: 16.04.2008, 18:57 Titel: |
|
|
Achje, ständig muss man in jedem Forum die ganze "Laufbahn" durchmachen^^
Ok hier der ganze:
Code: | DECLARE SUB file(filename$, num, x, y, click, edit)
DECLARE SUB editfile(filename$)
DIM filename(100) AS STRING
cls
SHELL "DIR > c:\dir.txt"
OPEN "I", #1, "c:\dir.txt"
for i = 1 to 7
input #1, text$
next i
do
input #1, line$
if mid$(line$, 10, 3)="SC " THEN
num=num+1
filename(num)=mid$(line$, 1, 8)
end if
loop until eof(1) or num = 20
close #1
TYPE RegTyp
AX AS INTEGER
BX AS INTEGER
CX AS INTEGER
DX AS INTEGER
BP AS INTEGER
SI AS INTEGER
DI AS INTEGER
FLAGS AS INTEGER
DS AS INTEGER
es AS INTEGER
END TYPE
DIM Einreg AS RegTyp
DIM AusReg AS RegTyp
Einreg.AX = 1
CALL INTERRUPT(&H33, Einreg, AusReg)
Einreg.AX = 3
do
CALL INTERRUPT(&H33, Einreg, AusReg)
for i = 1 to num
CALL file(filename(i), num, AusReg.CX, AusReg.DX, AusReg.BX, 0)
next i
if AusReg.BX then
do
CALL INTERRUPT(&H33, Einreg, AusReg)
loop until AusReg.BX=0
CALL file(filename(i), num, AusReg.CX, AusReg.DX, AusReg.BX, 1)
end if
loop
SUB file(filename$, num, x, y, click, edit)
col=40
bg=0
norm=15
over=12
cc=7
if x => col and x <= col+len(filename$) and y <= num*8-8 and y => num*8-1 then
go=1
if click then color cc, b else color over, bg
else
color norm, bg
end if
locate num, col: print filename$
if go and edit then
CALL editfile(filename$)
end if
END SUB
SUB editfile(filename$)
'hier passiert noch nix^^
END SUB |
_________________ RUN "brain.exe"
Datei nicht gefunden |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 16.04.2008, 19:28 Titel: |
|
|
Also ich bekomme hier nur "Unverträgliche Parametertypen", weil du Integer-parameter an eine Funktion übergibst, die Single erwartet. Abhilfe:
Code: | SUb ...... x as integer, y as integer, click as integer... |
und bevor du damit kommst, dass die fehelrmeldugn noch da ist: im DECLARE-Statement muss das auch angepasst werden... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|