![]() |
Probleme mit Konvertierung String->PChar (Pointer)->St
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute !!
Ich hab ein großes Problem, hoffentlich könnt ihr mir helfen! Ich programmiere gerade eine kleine Datenbank :stupid: . Jedenfalls stoße ich auf Probleme mit Strings bzw. der Speicherung von Strings. Da die Datentypen der Tabellen variieren muss ich leider mit Pointer arbeiten, und da gibt es Probleme :( Vor allem bei der Speicherung von Strings. Komischer Weise funktioniert alles, wenn ich die Arbeitsschritte in einer einfachen Funktion nachbilde. Ich suche schon zwei Tage nach dem verdammten Fehler, jedoch finde ich keine Lösung. Und deshalb wende ich mich nun an euch! zur Struktur der Datenbank: Am Anfang steht ein Record (FDataBase), welches einen String (FName) und eine Liste (FTables) enthält. Die Pointer der Liste sind Zeiger auf Tabellen-Records. Diese beinhalten einen String (FName), ein dynamisches Array (FFields) von Pointern und eine Liste (FData). Die Pointer des Arrays zeigen auf Felder-Records, diese speichern Namen und Typen (Integer -> Konstanten!). Die Liste (FData) enthält Pointer auf dynamische Arrays von Pointern, welche wiederum auf Integer, Boolean oder Stringvariabeln zeigen, je nach Datentyp. Folgendes manchmal funktioniert nicht: Hinweis: Die Funtion SelectFromTable ist noch nicht fertiggestellt, die letzten beiden Parameter werden noch nicht beachtet, die Funktion lädt die ganze Tabelle in das Ergebnis
Delphi-Quellcode:
Die angezeigte Nachrichtist manchmal korrekt, manchmal fehlt das Rufzeichen, manchmal befindet sich eine € am Schluss oder ein Rechteck, oder manchmal kommt ein kompletter Blödsinn heraus, wie z.B. : "a<*As", ihr könnt es ja selber testen, der rechte Button des Programmes, welches ich angehängt habe. Es dauert jedoch manchmal etwas länger bis eine fehlerhafte Anzeige auftritt.
procedure TForm1.Button2Click(Sender: TObject);
var theDB: TmyDB; begin theDB := TmyDB.Create( 'Datenbank2' ); theDB.CreateTable( 'Tabelle' , 'id = int; text = str' ); theDB.InsertIntoTable( 'Tabelle' , 'id = 100; text = Hallo_Markus!' ); theDB.SelectFromTable( 'Tabelle' , '' , '' ); ShowMessage( theDB.Result.ReadString( 0 , 'text' ) ); theDB.Free; end; Und folgendes funktioniert gar nicht:
Delphi-Quellcode:
id wird noch richtig angezeigt, der String und Boolean nicht! Leider finde ich das Problem nicht :gruebel:
procedure TForm1.Button1Click(Sender: TObject);
var myDB: TmyDB; begin myDB := TmyDB.Create( 'Datenbank1' ); myDB.CreateTable( 'Tabelle1' , 'id = int; meintext = str ; schreiben = bool' ); myDB.InsertIntoTable( 'Tabelle1' , 'id = 1; meintext = hallodu1!; schreiben = true' ); myDB.InsertIntoTable( 'Tabelle1' , 'id = 2; meintext = hallodu2!; schreiben = false' ); myDB.InsertIntoTable( 'Tabelle1' , 'id = 3; meintext = hallodu3!; schreiben = true' ); myDB.SelectFromTable( 'Tabelle1' , '' , '' ); // Ausgabe von verschiedenen Werten ShowMessage( '1 = ' + IntToStr( myDB.Result.ReadInteger( 0 , 'id' ) ) ); ShowMessage( 'hallodu3 = ' + myDB.Result.ReadString( 2 , 'meintext' ) ); if( myDB.Result.ReadBoolean( 2 , 'schreiben' ) ) then ShowMessage( 'Bool geht' ) else ShowMessage( 'bool geht nicht :(' ); myDB.Free; end; |
Re: Probleme mit Konvertierung String->PChar (Pointer)-&a
Bitte nicht alle auf einmal :mrgreen:
.... na gut, ich muss zugeben, dass ich nicht viele Antworten erwartet habe aber wäre trotzdem schön, wenn mir jemand helfen könnte, denn ich finde den Fehler immernoch nicht :wall: |
Re: Probleme mit Konvertierung String->PChar (Pointer)-&a
Liste der Anhänge anzeigen (Anzahl: 1)
Moin!
Dein 2. Weg klappte meistens, weil du da zwischen anlegen und auslegen nicht viel machst und daher die Chance höher ist, das der Speicher noch nicht wieder neu genutzt wurde. MfG Muetze1 |
Re: Probleme mit Konvertierung String->PChar (Pointer)-&a
Moin!
Und? Was ist nun? Erst rumschreien weil es sich keiner anschaut, dann macht man das mal und nun meldet sich keiner mehr... Wenigstens eine kleine Rückmeldung wäre ja mal nett bzw. eine Nachricht ob es denn nun funktioniert.... MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz