Autor |
Beitrag |
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Di 12.06.12 18:42
guten Tag,
die Music.res enthält folgenden Inhalt:
Delphi-Quelltext 1: 2: 3: 4:
| 1 WAVE "C:\Users\Benutzername\Desktop\Spiel\nötigeSounds\Win.wav" 2 WAVE "C:\Users\Benutzername\Desktop\Spiel\nötigeSounds\Loose.wav" 3 WAVE "C:\Users\Benutzername\Desktop\Spiel\nötigeSounds\Teleporter.wav" 4 MIDI "C:\Users\Benutzername\Desktop\Spiel\nötigeSounds\Backgroundmusic.mid" |
ich habe sie dann compiliert ( mit Brcc32.exe) und sie eingebunden.. soweit kein problem
die "Kurztöne" (also 1,2 und 3) spiele ich mit folgendem Code ab:
Delphi-Quelltext 1: 2: 3:
| PlaySound(PCHAR(1),HInstance, snd_ASync or snd_Memory or snd_Resource); PlaySound(PCHAR(2),HInstance, snd_ASync or snd_Memory or snd_Resource); PlaySound(PCHAR(3),HInstance, snd_ASync or snd_Memory or snd_Resource); |
Soweit alles kein problem
Aber wie kann ich die 3 Minuten MIDI Sequenz wiedergeben? Playsound funktioniert nicht parallel (mehrmals), dann bricht die jetzige ab, also wenn er ein LV schafft hört die Hintergrundmusik auf, damit fällt PlaySound aus.
Bis jetzz hatte ich die Midi-Sequenz immer beigelegt und sie mit einem TMediaplayer abgespielt. Aber das funktioniert jetzt nicht mehr
Möglichkeit (die ich aber vermeiden möchte):
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var Datei: TResourceStream; MedPlayer: TMediaPlayer;
Datei := TResourceStream.Create(HInstance,'4' , 'MIDI'); try Datei.SaveToFile(Pfad+'\Backroundmusic.mid'); finally Datei.Free; end; MedPlayer := TMediaPlayer.create(Form1); try MedPlayer.Filename := Pfad+'\Backroundmusic.mid'; finally Medplayer.play; |
ich denke ihr versteht, dass ich die Hintergrundmusik direkt in der EXE verwenden möchte und sie nciht vorher speichern möchte...
freu mich auf eure Antworten
EDIT: Ich möchte nicht den Mediaplayer vermeiden, sondern das Speichern der Datei um sie mit dem TMediaplayer zu verwenden.. kann ich eine variable Datei: MusicFile anlegen und diese dann mit Datei := TResourceStream.Create(HInstance,'4' , 'MIDI') aufrufen und dann mit MedPlayer.File := Datei arbeiten? natürlich ist das jetzt sehr grob gedacht, aber von der Idee her mein ich natürlich
Moderiert von Narses: Beiträge zusammengefasst
MCISendString(PChar('play ' + Pfad+'Backgroundmusik.Mid'), nil, 0, 0);
klappt auch leider nicht...
mal ne frage: warum ist folgender code nicht möglich:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| var Datei: TResourceStream;
Datei := TResourceStream.Create(HInstance,'4' , 'MIDI'); MCISendString(PChar('play ' + Datei), nil, 0, 0); |
ich gehe davon aus, das der Fehler darin liegt, das ein TResourceStream nicht weitergegeben werden kann an die Soundkarte, aber wie ist es denn?
Und wie schaff ich es einen TMediaplayer eine Datei abzuspielen? Also dass ich keinen Pfad sondenr eine Datei angebe...
Beispiel:
Bis jetzt: Mediaplayer.filename := Pfad+Musikdatei
Gesucht: Mediaplayer.????? := Datei;
Was muss hinter den . für die Fragezeichen ?? sowas wie File gibt es ja leider nicht.
Was muss die Variable Datei für ein Typ sein? ich denke mal sowas wie Mediafile, dass auch nicht klappt
(das sind nur Überlegungen von mir, wie es ungefähr sein müsste... aber ich weiß es einfach nicht genau )
Moderiert von Narses: Topic aus Dateizugriff verschoben am Di 12.06.2012 um 23:39
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Mi 13.06.12 17:12
Die Frage nochmal kurz:
Wie kann man eine Datei (die per *.res eingebunden wurde) mit einem Mediaplayer abspielen?
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Sa 16.06.12 11:54
-push-
PS: Ist das Erlaubt?
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
jaenicke
Beiträge: 19284
Erhaltene Danke: 1742
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 16.06.12 12:43
[quote:b9163613b8=\" IhopeonlyReader\"(664496)]-push-
PS: Ist das Erlaubt?[/quote:b9163613b8]Da mehr als 24 Stunden vergangen sind, ja.
Ich denke das beste ist dafür die Bass DLL, das ist ohnehin mindestens tausendmal besser als der TMediaPlayer:
www.un4seen.com/bass.html
Damit kannst du auch Streams abspielen und mit TResourceStream hast du ja bereits die Daten in einem Stream.
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Sa 16.06.12 16:07
Danke Aber bei dem einbinden folgendes Problem: mit der Unit: "Dynamic_WASAPI"
Quellcode der Unit:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197:
|
unit Dynamic_WASAPI;
interface
uses Windows, Dynamic_Bass;
const BASS_ERROR_BUSY = 46; BASS_ERROR_WASAPI = 5000; BASS_WASAPI_TYPE_NETWORKDEVICE = 0; BASS_WASAPI_TYPE_SPEAKERS = 1; BASS_WASAPI_TYPE_LINELEVEL = 2; BASS_WASAPI_TYPE_HEADPHONES = 3; BASS_WASAPI_TYPE_MICROPHONE = 4; BASS_WASAPI_TYPE_HEADSET = 5; BASS_WASAPI_TYPE_HANDSET = 6; BASS_WASAPI_TYPE_DIGITAL = 7; BASS_WASAPI_TYPE_SPDIF = 8; BASS_WASAPI_TYPE_HDMI = 9; BASS_WASAPI_TYPE_UNKNOWN = 10;
BASS_DEVICE_ENABLED = 1; BASS_DEVICE_DEFAULT = 2; BASS_DEVICE_INIT = 4; BASS_DEVICE_LOOPBACK = 8; BASS_DEVICE_INPUT = 16;
BASS_WASAPI_EXCLUSIVE = 1; BASS_WASAPI_AUTOFORMAT = 2; BASS_WASAPI_BUFFER = 4;
BASS_WASAPI_FORMAT_FLOAT = 0; BASS_WASAPI_FORMAT_8BIT = 1; BASS_WASAPI_FORMAT_16BIT = 2; BASS_WASAPI_FORMAT_24BIT = 3; BASS_WASAPI_FORMAT_32BIT = 4;
type BASS_WASAPI_DEVICEINFO = record name: PAnsiChar; id: PAnsiChar; &type: DWORD; flags: DWORD; minperiod: Single; defperiod: Single; mixfreq: DWORD; mixchans: DWORD; end;
BASS_WASAPI_INFO = record initflags: DWORD; freq: DWORD; chans: DWORD; format: DWORD; buflen: DWORD; volmax: Single; volmin: Single; volstep: Single; end;
WASAPIPROC = function(buffer:Pointer; length:DWORD; user:Pointer): DWORD; stdcall;
var BASS_WASAPI_GetVersion:function(): DWORD; stdcall; BASS_WASAPI_GetDeviceInfo:function(device:DWORD; var info:BASS_WASAPI_DEVICEINFO): BOOL; stdcall; BASS_WASAPI_GetDeviceLevel:function(device:DWORD; chan:Integer): single; stdcall; BASS_WASAPI_SetDevice:function(device:DWORD): BOOL; stdcall; BASS_WASAPI_GetDevice:function(): DWORD; stdcall; BASS_WASAPI_CheckFormat:function(device:Integer; freq,chans,flags:DWORD): DWORD; stdcall; BASS_WASAPI_Init:function(device:Integer; freq,chans,flags:DWORD; buffer,period:Single; proc:WASAPIPROC; user:Pointer): BOOL; stdcall; BASS_WASAPI_Free:function(): BOOL; stdcall; BASS_WASAPI_GetInfo:function(var info:BASS_WASAPI_INFO): BOOL; stdcall; BASS_WASAPI_GetCPU:function(): float; stdcall; BASS_WASAPI_Lock:function(lock:BOOL): BOOL; stdcall; BASS_WASAPI_Start:function(): BOOL; stdcall; BASS_WASAPI_Stop:function(reset:BOOL): BOOL; stdcall; BASS_WASAPI_IsStarted:function(): BOOL; stdcall; BASS_WASAPI_SetVolume:function(linear:BOOL; volume:single): BOOL; stdcall; BASS_WASAPI_GetVolume:function(linear:BOOL): single; stdcall; BASS_WASAPI_SetMute:function(mute:BOOL): BOOL; stdcall; BASS_WASAPI_GetMute:function(): BOOL; stdcall; BASS_WASAPI_PutData:function(buffer: Pointer; length: DWORD): DWORD; stdcall; BASS_WASAPI_GetData:function(buffer: Pointer; length: DWORD): DWORD; stdcall; BASS_WASAPI_GetLevel:function(): DWORD; stdcall;
var WASAPI_Handle : Thandle = 0;
Function Load_WASAPIDLL(const dllfilename : string) : boolean; procedure Unload_WASAPIDLL;
implementation
Function Load_WASAPIDLL(const dllfilename : string) : boolean; var oldmode : integer; begin if WASAPI_Handle <> 0 then Result:= true else begin oldmode := SetErrorMode($8001); {$IFDEF UNICODE} WASAPI_Handle:= LoadLibraryW(PWideChar(dllfilename)); {$ELSE} BASSCD_Handle:= LoadLibrary(PChar(dllfilename)); {$ENDIF} SetErrorMode(oldmode); if WASAPI_Handle <> 0 then begin @BASS_WASAPI_GetVersion:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_GetVersion')); @BASS_WASAPI_GetDeviceInfo:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_GetDeviceInfo')); @BASS_WASAPI_GetDeviceLevel:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_GetDeviceLevel')); @BASS_WASAPI_SetDevice:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_SetDevice')); @BASS_WASAPI_GetDevice:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_GetDevice')); @BASS_WASAPI_CheckFormat:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_CheckFormat')); @BASS_WASAPI_Init:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_Init')); @BASS_WASAPI_Free:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_Free')); @BASS_WASAPI_GetInfo:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_GetInfo')); @BASS_WASAPI_GetCPU:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_GetCPU')); @BASS_WASAPI_Lock:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_Lock')); @BASS_WASAPI_Start:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_Start')); @BASS_WASAPI_Stop:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_Stop')); @BASS_WASAPI_IsStarted:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_IsStarted')); @BASS_WASAPI_SetVolume:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_SetVolume')); @BASS_WASAPI_GetVolume:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_GetVolume')); @BASS_WASAPI_SetMute:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_SetMute')); @BASS_WASAPI_GetMute:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_GetMute')); @BASS_WASAPI_PutData:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_PutData')); @BASS_WASAPI_GetData:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_GetData')); @BASS_WASAPI_GetLevel:= GetProcAddress(WASAPI_Handle, Pchar('BASS_WASAPI_GetLevel'));
if (@BASS_WASAPI_GetVersion = nil) or (@BASS_WASAPI_GetDeviceInfo = nil) or (@BASS_WASAPI_GetDeviceLevel = nil) or (@BASS_WASAPI_SetDevice = nil) or (@BASS_WASAPI_GetDevice = nil) or (@BASS_WASAPI_CheckFormat = nil) or (@BASS_WASAPI_Init = nil) or (@BASS_WASAPI_Free = nil) or (@BASS_WASAPI_GetInfo = nil) or (@BASS_WASAPI_GetCPU = nil) or (@BASS_WASAPI_Lock = nil) or (@BASS_WASAPI_Start = nil) or (@BASS_WASAPI_Stop = nil) or (@BASS_WASAPI_IsStarted = nil) or (@BASS_WASAPI_SetVolume = nil) or (@BASS_WASAPI_GetVolume = nil) or (@BASS_WASAPI_SetMute = nil) or (@BASS_WASAPI_GetMute = nil) or (@BASS_WASAPI_PutData = nil) or (@BASS_WASAPI_GetData = nil) or (@BASS_WASAPI_GetLevel = nil) then begin FreeLibrary(WASAPI_Handle); WASAPI_Handle := 0; end; end; Result:= (WASAPI_Handle <> 0); end; end;
procedure Unload_WASAPIDLL; begin if WASAPI_Handle <> 0 then FreeLibrary(WASAPI_Handle); WASAPI_Handle := 0; end;
end. |
Fehlermeldung:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| [Fehler] Dynamic_WASAPI.pas(56): Ungültiges Zeichen in Eingabedatei: '&' ($26) [Fehler] Dynamic_WASAPI.pas(56): '=' erwartet, aber ';' gefunden [Fehler] Dynamic_WASAPI.pas(57): '=' erwartet, aber ':' gefunden [Fehler] Dynamic_WASAPI.pas(58): '=' erwartet, aber ':' gefunden [Fehler] Dynamic_WASAPI.pas(59): '=' erwartet, aber ':' gefunden [Fehler] Dynamic_WASAPI.pas(60): '=' erwartet, aber ':' gefunden [Fehler] Dynamic_WASAPI.pas(61): '=' erwartet, aber ':' gefunden [Fehler] Dynamic_WASAPI.pas(62): 'IMPLEMENTATION' erwartet, aber ';' gefunden [Fehler] Dynamic_WASAPI.pas(73): '.' erwartet, aber ';' gefunden [Fehler] Dynamic_WASAPI.pas(75): Bezeichner erwartet, aber '(' gefunden [Fehler] Dynamic_WASAPI.pas(75): Unbekannte Anweisung: 'length' [Fehler] Dynamic_WASAPI.pas(92): Undefinierter Bezeichner: 'WASAPIPROC' [Fehler] Dynamic_WASAPI.pas(94): Undefinierter Bezeichner: 'BASS_WASAPI_INFO' [Fehler] Dynamic_WASAPI.pas(110): Lokale Variablen können nicht initialisiert werden [Fehler] Dynamic_WASAPI.pas(116): ';' erwartet, aber 'IMPLEMENTATION' gefunden [Fataler Fehler] Project1.dpr(6): Verwendete Unit 'Dynamic_WASAPI.pas' kann nicht compiliert werden |
aber z.B. der Fehler
[Fehler] Dynamic_WASAPI.pas(75): Unbekannte Anweisung: 'length'
wundert mich sehr... wurde vergessen bestimme units einzubinden?
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
jaenicke
Beiträge: 19284
Erhaltene Danke: 1742
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 16.06.12 21:59
Nimm einfach das & in Zeile 56 weg, der Rest sind Folgefehler, wahrscheinlich geht es dann schon. Aber wozu brauchst du die Windows Audio Session API? Eigentlich sollte doch Dynamic_BASS erst einmal reichen.
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Sa 16.06.12 22:32
wie aufrufen und so? *hilfe nötig^^
da der Nutzer es wie ein TMediaplayer nutzen sollte (also es sollte einstellbar, play und stop/break) sollte ja eine sichtbare komponente vorhanden sein oder? oder muss ich das mit buttons erreichen?
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
Gausi
Beiträge: 8538
Erhaltene Danke: 475
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Sa 16.06.12 22:37
Ja. Die bass.dll ist keine (visuelle) Komponente, sondern "nur" eine externe Bibliothek, die du mitliefern musst.
Die GUI dazu muss man selber schreiben, wenn man eine benötigt.
_________________ We are, we were and will not be.
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Mo 18.06.12 13:31
Gausi hat folgendes geschrieben : | Die GUI dazu muss man selber schreiben, wenn man eine benötigt. |
Mhh... ehrlich gesagt habe ich davon ca 0 Ahnung...
Ich würde gerne einen Stream abspielen, wie ist das denn damit möglich?
Wenn das wirklich nur eine Datenbank ist, dann würde ich gerne wissen WOZU das eine Datenbank ist, wenn man den GUI doch selbstschreiben muss
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
Gausi
Beiträge: 8538
Erhaltene Danke: 475
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mo 18.06.12 13:48
Das ist keine Datenbank, sondern eine Bibliothek, das ist wohl doch etwas anderes.
Wo ist denn das Problem, ein paar Buttons auf die Form zu klatschen und im OnClick die entsprechenden Routinen der bass.dll aufzurufen? Klar wäre es für dich schöner, wenn bei der bass.dll direkt dein fertiges Programm dabei wäre, aber in vielen Fällen wird ja (fast) gar keine GUI für das Abspielen benötigt (z.B. bei Hintergrundmusik oder Effekten bei Spielen).
Wie das Abspielen eines RessourceStreams damit genau geht, weiß ich auch nicht. Ich sehe aber auch nicht ganz den Sinn dahinter, alles in die exe zu packen. Zumal du mit der bass.dll jetzt ja sowieso mindestens eine weitere Datei mitliefern musst.
Nebenbei: Wenn das wirklich nur ein Haus ist, dann würde ich gerne wissen WOZU das ein Haus ist, wenn man sich den Bodenbelag und die Tapete selbst aussuchen muss.
_________________ We are, we were and will not be.
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Mo 18.06.12 16:45
ok danke
ich wollte einfach vermeiden, dass wenn man meine EXE rumgibt, dass man dann alle datein erst komprimieren muss etc... so ist es nur eien einfache EXE (trotzt musik dateien.. weniger als 1MB groß)
ich verstehe nun was du meinst und wenn ich die bibliothek mitliefern muss, dann benutz ich doch lieber den alten Tmediaplayer (mit dem ich zufrieden bin) und lade die Datei im App-Data ordner und lass sie dann abspielen, und damit ich den PC nicht zumüll lösche ich die Datei beim schließen (und spielstandlöschenbutton) wieder
Aber eins ist dennnoch blöd bei dem TMediaplayer: Wenn ich die Dauerschleife bei mir drin habe, dann wird die datei nach ende wieder abgespielt ( mediaplayer.play) dabei lagt es ca 0,2 sek.. ist das verhinderbar?
Also jedesmal wenn ich auf play klicke lagt es woran leigt das (an der schleife liegt es nicht, da es auch lagt wenn ich manuell auf den playbutton drücke)
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
jaenicke
Beiträge: 19284
Erhaltene Danke: 1742
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 18.06.12 17:22
Solche kleinen Probleme wirst du nicht verhindern können, wenn du bei TMediaPlayer bleiben willst.
Es ist nun einmal Standard, dass eine Anwendung nicht nur aus einer Exe besteht. Wenn das bei dir anders sein soll, dann musst du eben auch entsprechende Einschränkungen in Kauf nehmen...
|
|
Gausi
Beiträge: 8538
Erhaltene Danke: 475
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mo 18.06.12 17:26
Wobei ich 0.2 sec schon für arg viel bei kurzen Files halte, selbst für den TMediaPlayer.
Sicher, dass das "laggen" nicht daran liegt, dass die Datei am Anfang oder Ende etwas Stille hat? Oder hakt das Programm wirklich komplett?
_________________ We are, we were and will not be.
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Mo 18.06.12 18:08
Da ich mit einem timer meine Spielfiguren zeichne... und diese dann für kurze zeit Stehen bleiben lagt das ganze programm
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
|