Zum Inhalt springen

Zakum

Mitglieder
  • Gesamte Inhalte

    67
  • Benutzer seit

  • Letzter Besuch

  1. Vertrackte Sache, das! Gut zu wissen, dankeschön.
  2. Ohh... Ersteres war mir nicht bewusst! Oo Irgend wann verliert man den Überblick, welches Hochkomma in welcher Sprache was bedeutet. ^^ Nehme an, das "..." kennzeichnet einen Stringliteral, und deswegen der char*? Zweiteres... Danke. Drittens hab ich erfolgreich verdrängt gehabt. Könntest du in einer freien Minute kurz anreißen, was der explizite cast an Schaden anrichten kann? Nur so, aus purer Neugier. Ansonsten mal wieder ein großes Dankeschön, ich weiß gar nicht mehr, das wievielte Jahr in Folge du mir schon bei meinen Wehwehchen zur Seite stehst.
  3. Ich sitze seit einer Weile an einem Problem fest, die Lösung ist vermutlich trivial, aber mittlerweile sehe ich das IKEA vor lauter Möbeln nicht, vlt. ist ja jemand so nett, mir die Augen zu öffnen. Folgendes Code-Schnipsel zum Testen meiner Funktion void* alloc(): ... int main(){ char* adr1=(char*)alloc(); *adr1="E"; // <-- Warnung int* adr2=(int*)alloc); *adr2="2"; // <-- Warnung float* adr3=(float*)alloc(); *adr3=3.5; printf("%c %d %f\n",*adr1,*adr2,*adr3); return 0; } Der Compiler warnt an zwei Stellen vor "Zuweisung erzeugt Ganzzahl von Zeiger ohne Typkonvertierung." Entsprechend sieht auch die Ausgabe aus: ` 134514018 3.500000 Alloc ist eine eigene Speicherverwaltung, und gibt mir die Startadresse eines reservierten Speicherblocks zurück. Im Test versuche ich nun, an die jeweils entsprechenden Adressen zuerst einen Charackter, dann einen Integer und am Ende eine Float zu speichern, und testweise aus zu geben. Da alloc einen Zeiger auf void zurück gibt, caste ich das ganze zuerst auf Zeiger in den entsprechenden Typ, und dereferenziere bei der Zuweisung des Wertes. Warum funktioniert dieser Weg bei int und char nicht? Und warum klappt es dafür mit einem float? Habe ich das was mit den Typen vermengt? Vielen Dank schon jetzt für eure Hilfe! -Zakum
  4. Vielen Dank, das klappt bisher sehr gut. Allerdings entsteht dabei ein ganz anders Problem, irgendwo im Restprogramm, wobei das natürlich ganz meine Sorge ist. Also nochmals danke schön, das ist ne sehr angenehme Funktion.
  5. Hallo, ich arbeite gerade zum ersten Mal mit zwei Forms in einem Delphi-Projekt (war iwie nie von Nöten, bisher Oo) und bin da auf folgendes Problem gestossen: Mitten in einer Prozedur soll das zweite Formular escheinen, dort werden dann, während die "rufende Prozedur" schläft, einige Angaben gemacht und auf Festplatte gespeichert, dann darfs im ersten Formular/Unit weiter gehen, das diese Daten von Festplatte lädt und weiter verarbeitet (Oder kann ich die beiden irgendwie kommunizieren lassen und muss nicht auf Festplatte zwischen speichern?). Ich hab das wie folgt realisiert: filme_form.visible:=true; //zweites Formular erscheint main_form.Caption:='Pause'; While main_form.Caption='Pause' do Application.ProcessMessages; //wir warten, bis die Caption wieder geändert wird ... Und in der Unit des erscheinende Formulars passiert dann folgendes: ... main_form.Caption:='Aktiv'; filme_form.visible:=false; Was soll ich sagen... Es funktioniert. Nun höre ich aber schon im Geiste den Doktor über schlechten Programmierstil zettern. Naja, ganz im Ernst, das ist wirklich etwas übers Knie gebrochen. Weiß jemand, wie das schöner geht? Ohne Endlosschleife wäre ja zumindest nicht schlecht... Vielen Dank schon im Vorraus, Zakum
  6. Hey Chief, das Anwendungsforum läuft aber unter Fachliches... So wichtig hab ich meine Anfrage nun doch nicht eingeschätzt. Vielen Dank für den Tipp, mal sehen, ob ich mit den ganzen schlauen Wörtern in deinem Post zurecht komme, wenn nicht, dann meld ich mich. ^^ Bin aber auch für weitere Vorschläge offen, also wenn jemand was kennt... Immer her damit.
  7. Hey, ich hab mir die Tage endlich mal einen Laptop geleistet, eigentlich nur als Arbeitstier, da ich an meinem Desktop doch sehr hänge. Nun hab ich aber das Problem, dass ich auf 2 Rechnern arbeite, aber gerne einen einzigen, vollständigen Kalender (in digitaler Ausführung ^^) hätte. Kennt jemand ne passende Software, mit der man (am besten online) sowas einrichten kann. Am liebsten natürlich kostenlos. Ciao, Zakum
  8. Ja, ich nehme an, ich habe die Idee verstanden. Clever gelöst! :uli Ich glaube aber, das kann ich in dem Kontext nicht umsetzen: Das ganze soll eine Content Providing Unit werden, in array of movies werden also alle Filme gespeichert, die ein User bereits gesehen hat. Auf dieser Basis soll das Programm dann Vorschläge für Filme liefern, die den User gefallen könnten. Da für jeden Film (für jeden User) eine neue Datei zu speichern, würde wohl schnell in Chaos ausarten. Aber den Trick merk' ich mir, der ist ziemlich praktisch! Ist ja nicht das erste mal, das ich auf ein Finalization Problem stoße, und bestimmt nicht das Letze. Mit sivestrigen Grüßen, Zakum
  9. Hallo allerseits. Bin gerade eben auf ein eher theoretisches Problem gestoßen und mir fällt kein cleverer Ausweg ein- vielleicht kann ja jemand helfen. Ich möchte einen Verbund, der dynamische Arrays enthält in typisierten Dateien speichern, um so praktischer darauf zugreifen zu können. Der Verbund: user = record name:string[20]; saw: array of movie; favGenre: array of string[20]; favActor: array[1..7] of string[20]; favDirec: array[1..3] of string[20]; end; Die gewünschte Datei: var datei:file of user; Tja, nun liefert mir mein Freund der Compiler den Fehler: Type user needs finalization- not allowed in file type Ertappt! Mein saw ist dynamisch, damit unterscheiden sich also die User in ihrer Größe von einander... Lässt sich hier trotzdem irgendwie der "file of user" verwenden? Ich würde nur ungern auf TextFile umsteigen. Vielleicht kennt ja jemand nen Ausweg, oder weiß das dies unmöglich ist? Wäre für jeden Hinweis dankbar. Ciao Zakum
  10. Also Guybrushs Link hat mir eigentich sehr geholfen, alles funktioniert bisher einwandfrei. Zumal ich leider in C schreiben muss, da werd ich mit den .hpp headern wohl nicht weit kommen. Aber trotzdem danke.
  11. Merci beaucoup! Das nenne ich eine klare und umfassende Antwort.
  12. Hallo Leute. Ich schreibe gerade ein Programm, dass unter Ubuntu, Linux laufen soll. Das Programm liest eine ziel.txt ein und verarbeitet das Ding dann. Somit muss der Nutzer, wenn er eine andere Datei verarbeitet haben möchte, diese Datei in ziel.txt umbenennen. Das ist natürlich nicht unbedingt schön. Ich hab gehört, es wäre theoretisch möglich, beim Programmaufruf durch ein Terminal, einfache den Dateinamen mitzugeben (als Suffix?), der verarbeitet werden soll. Allerdings habe ich absolut keine Idee, wie das umsetzbar wäre, an sich ist das ja ein ziemlicher Batzen an Problemen (der wohl etwas über meine "Gehaltsstufe" steht ...ich denke da nur an das parsen). Weiß zufälliger Weise jemand, ob es da vlt. entsprechende Bibliothek gibt? Oder wie wird das sonst in solchen Fällen geregelt? Ciao Zakum
  13. Zakum

    mp3 abspielen

    Hmm... ich weiß nicht, wie du ein C Programm zu mehr kompatibilität bekommst. Allerdings wird, fals ich richtig informiert bin, sehr gerne Java verwendet, wenn ein Programm wirklich plattfom unabhängig sein soll. Eventuell solltest du also überlegen, für dieses Problem auf Java umzusteigen.
  14. Zakum

    Zeiger in Rekursionen

    :upps Manchmal ist man aber auch wie vernagelt! Hab dieses ++count einfach jedes mal übersehen, war natürlich das, was ich gesucht hatte. Vielen Dank, bubble!
  15. Hallo Ich hab (mal wieder ) einen kleinen Disput mit meinem Compiler und bin etwas ratlos. Und zwar geht es darum, dass ich ein Programm, das vorher mit lauter globalen Variablen (fehlerfrei) lief jetzt modularisieren möchte... Also weg mit dem ganzen globalen zeug, dachte ich mir. Ging auch ganz gut, bis es dazu kam, dass ich in einer rekursiven Funktion Zeiger übergeben wollte: void lokalisieren(int x, int y, int *count, double grauwert[256][256]) { tmp[*count].x=x; tmp[*count].y=y; //Koordinaten des schwarzen Punktes speichern grauwert[x][y]=50; //schwarzen Punkt löschen, damit nicht doppel gezählt wird ++ Farbänderun, später weg ++count; if (grauwert[x][y+1]==0) lokalisieren(x,y+1,&count,grauwert); if (grauwert[x][y-1]==0) lokalisieren(x,y-1,&count,grauwert); if (grauwert[x-1][y+1]==0) lokalisieren(x-1,y+1,&count,grauwert); if (grauwert[x-1][y]==0) lokalisieren(x-1,y,&count,grauwert); if (grauwert[x-1][y-1]==0) lokalisieren(x-1,y-1,&count,grauwert); if (grauwert[x+1][y+1]==0) lokalisieren(x+1,y+1,&count,grauwert); if (grauwert[x+1][y]==0) lokalisieren(x+1,y,&count,grauwert); if (grauwert[x+1][y-1]==0) lokalisieren(x+1,y-1,&count,grauwert); } sowie natürlich der Aufruf: lokalisieren(x,y,&count,grauwert); So wie das ganze jetzt aussieht, liefert mir der Compiler für jede der if-Zeilen folgende Warnung: Übergabe von Argument 3 von lokalisieren von inkompatiblen Zeigertyp Was beim ausführen natürlich auch einen Segmentation-faul verursacht. Als ich testweise das & weggelassen habe, war der compiler wieder still... Gab allerdings wieder einen Segmentation-fault (was ja auch logisch ist, ich will ja schlieslich die Adresse übergeben). Weiß vlt. jemand, was das alles zu bedeuten hat? :eek

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...