Hallo Leute...
folgendes Problem :
Habe für mein Programm den
DB Pfad in einer .udl Datei hinterlegt.
Diese will ich nun auch im Programm auslesen( also den Pfad wo die
DB liegt).
Das schaffe ich auch soweit.
Doch vor und hinter dem eigentlichen Pfad steht ja noch was...
Zum testen habe ich es geschafft, den reinen Pfadstring auszulesen.
Doch wenn man den Pfad in der udl Datei ändert, würde meine Lösung nicht mehr greifen.
Mir geht es praktisch darum, wie ich die letzten 27 zeichen hinter dem eigentlichen Pfadstring immer abschneiden kann, wenn dieser variabel ist ( sprich veränderlich lang und nich immer gleichviele Zeichen enthält)
Ich benutze atm folgenden Code :
Delphi-Quellcode:
procedure TFormAuftrag.Button1Click(Sender: TObject);
{Hier wird mit UDLFileStream eine UDL Datei in einen Stream gelesen.
Da in einer UDL Datei ab dem 3. Byte jedes zweite Zeichen #0 ist,
wird der UDLFileStream byteweise in UDLMemStream kopiert. Dabei wird
das Zeichen #0 unterdrückt. Anschließend. kann TStringList.LoadFromStream
aufgerufen werden}
var
Datei : string;
list : TStringList;
UDLFileStream : TFileStream;
UDLMemStream : TMemoryStream;
UDLByte : Byte;
str: string;
neuerstring : string;
begin
Datei := ExtractFilePath(Application.Exename) + 'datenbank.udl';
list := TStringList.Create;
UDLMemStream:=TMemoryStream.Create;
UDLFileStream:=TFileStream.Create(Datei,fmOpenRead);
Try
// Die ersten beiden Bytes in der UDL Datei sind FF und FE
// Die können übersprungen werden.
UDLFileStream.Seek(2,soFromBeginning);
// Kopieren des Stream
While UDLFileStream.Position<UDLFileStream.Size do
begin
UDLFileStream.Read(UDLByte,SizeOf(Byte));
If UDLByte<>0 then // unterdrücken von #0
UDLMemStream.Write(UDLByte,SizeOf(Byte));
end;
UDLMemStream.Seek(0,soFromBeginning);
list.LoadFromStream(UDLMemStream);
str := list.Strings[2];
finally
UDLFileStream.Free;
UDLMemStream.Free;
list.Free;
end;
NeuerString := Copy(str, 46, 76); // um das Stück hier geht es. das ist nun fest.
end;
Da wo jetzt die 76 steht...das müsste dann sowas stehen, das mit den String, egal wie lang er ist, ausliest, und immer die letzten 27 Zeichen (das hier : Persist Security Info=False), die ja immer gleichsind, abschneidet.
Wie kan nich das realisieren ?!
Steh da ein wenig auf dem Schauch.
Vielen Dank
und MFG
Carsten